データの読み込み

Rでデータの読み込み→dataframe型といえば、"read.table"関数とか"read.csv"関数とかある。一度整理しておく。

1.縦横きっちりデータが入っている場合

  • 表頭と表側がある場合

表頭と表側がある場合が一番簡単で、"read.table"関数がそのまま使える。

data1 <- read.table("withheader.csv",header = T, row.names = 1, sep = ",")
  • 表頭が無い場合
header=F

とする。

  • 表側が無い場合
row.names = 1

を外す。

2.欠損がある場合

データに欠損がある場合でも、Excelcsvで保存ならばカンマが挿入されるので、"read.table"関数が使える。ただしdataFrameには、データが欠損しているところには"NA"が挿入される。

問題は次のようなジャグ配列のようなパターンである。

そのまま"read.table"関数を使うとエラーが出る。このような場合には、dataFrame型には格納できないので、list型に格納することになる。

jag <- readLines("jag.csv")	#(1)
dataList <- as.list(NULL)	#(2)
for(i in 1:length(jag)){	#(3)
	dataList <- append(dataList,strsplit(jag[i], split = ","))}
  • #(1) "readLines"関数を使って、データを一度格納する。
  • #(2) list型の変数を用意する
  • #(3) jagの行数分だけ、"strsplit"関数を使ってカンマで分割しながら、dataListにデータを追加していく。

ちなみに、文字列型で格納されるので、実数型で格納したい場合には"as.numeric"関数を使って適宜実数に置き換える必要がある。

dataListN <- as.list(NULL)
for(i in 1:length(dataList)){
	dataListN <- append(dataListN,list(as.numeric(dataList[ [i] ])))
}

これで一応ジャグ配列でも突っ込める。