データの読み込みでつまづいたので対処法をメモ。
read.csv()でデータを読み込んで下記のエラーメッセージが出力されました。
data<-read.csv("data/2910.csv",fileEncoding="Shift_JIS")
警告メッセージ:
scan(file = file, what = what, sep = sep, quote = quote, dec = dec, で:
入力コネクション 'data/2910.csv' に不正な入力がありました
本来500行くらいあるデータベースですが、17行しか読み込めていません。
nrow(data)
[1] 17
read.table()で区切り文字を指定して読み込んでみましたが、今度は別のエラーメッセージが出力されました。
データ内の文字列のどこかに「,」が入っているのかもしれませんが、ちょっと探せませんでした。
そもそも、エクセルなどでは普通に開けるので、Rで開けない理由がよくわかりません。
data<-read.table("data/2910.csv",sep=",",fileEncoding="Shift_JIS")
警告メッセージ:
1: scan(file = file, what = what, sep = sep, quote = quote, dec = dec, で:
入力コネクション 'data/2910.csv' に不正な入力がありました
2: scan(file = file, what = what, sep = sep, quote = quote, dec = dec, で:
読み込まれた項目数が、列数の倍数ではありませんでした
なぜか1行増えて18行目まで読めていました。
nrow(data)
[1] 18
いろいろ試したのですが、うまくいかず、最終的にfread()での読み込みに成功しました。
行数も505行で全部読み込めています。
install.packages("data.table")
library(data.table)
data<-fread("data2/2910.csv")
nrow(data)
[1] 505
fread()はShift_JISに対応していないので、あらかじめ文字コードをUTF-8に変換しておきます。
ディレクトリ内の文字コード一括変換は以下のコマンドにて行いました。
find -name '*.csv' | xargs nkf --overwrite -w
以下の情報を参考にしました。
【linux】ファイルの文字コードを変換する。vi、iconv、nkf (nkfの文字コード判定とか一括変換は便利)
最終的にやりたかったのは以下のコードです。
ディレクトリ「data2」のcsvファイルを全部マージしてdata.frameにします。
1万行くらい読み込めているので、たぶん全部読み込めたのだろうと思います。
csv<-list.files("data2",full.names=T)%>%
lapply(fread,header=TRUE,sep=',',encoding="UTF-8")
data<- do.call(rbind, csv)
nrow(data)
[1] 11142
月ごとにデータのヒストグラムが作成できたので成功です。