膨大な列からなるCSVファイルを効率的に読み込みたい。
動作環境 R studio
Rでcsvファイル(factor,integer,dateが混在した100列以上からなる)を型を指定して、効率よく読みたいです。型を指定するため、read.csv(...,colClasses=c(...))を活用しようとしています。しかし、integerを指定するとエラーが発生しまうのでうが原因がわかりません。
scan(file = file, what = what, sep = sep, quote = quote, dec = dec, でエラー:
scan() 関数は 'an integer' を期待したのに、得られたのは '"1"' でした
サンプルデータの作成
x<-c(sample(1:100,10))/100
y<-c(sample(letters,10))
z<-c(sample(1000:1100,10))/10
x2<-c(sample(1:100,10))
y2<-c(sample(c("OK","NG"),10,replace=T))
dt<-data.frame(lot=x,name=y,item=z,item2=x2,result=y2)
Names<names(dt)
write.csv(dt,file="sample.csv")
rm(dt)
dt.head<-read.csv("sample.csv",nrow=3)
classes<-as.vector(sapply(df.head,class))
Name<-names(dt)
型を指定するとscan()エラが発生する。
read.csv("sample.csv",colClasses=classes,fileEncoding="UTF-8",fill=TRUE,col.names=Name)
すべて"character"として読み込む
read.csv("sample.csv",colClasses="character",fileEncoding="UTF-8",fill=TRUE,col.names=Name)->df2
sapply(df2,class)
どうやらはじめのintegerでエラが発生している
print(classes)
エラー箇所を回避する。
read.csv("sample.csv",colClasses=c("character","numeric","factor","numeric","integer","factor"),fileEncoding="UTF-8",fill=TRUE,col.names=Name)->df3
sapply(df3,class)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。