一日一膳(当社比)

RとJavaと時々数学

Rで複数のcsvファイルからデータをまとめて読み込む

このところ暑い日が続いてますが,本気で20度くらい気温下がってほしいですよね.

普段の業務で表形式のデータの集計なんかしている方でしたら, csvを複数一気に読み込まないといけないなんていう状況があると思います.

今日はそんな場面で使えるRコードをご紹介します.

#'@param filePaths 読み込むCSVファイルのパスのリスト
#'@param reader csvファイルからデータを読む関数
mergeCSV <- function(filePaths, reader) {
    csv_list <- lapply(filePaths, reader)
    return(Reduce(function(x, y) rbind(x, y), csv_list))
} 

#csvフォルダ下のfrutes_1.csv, frutes_2.csv, frutes_3.csvを読み込む
filePaths <- paste(rep('./csv/fruits_', 3), c(1:3), rep('.csv', 3), sep='')

data <- mergeCSV(filePaths,read.csv)

View(data)

一応コメントしておきますと,csvから読み込んだ複数のデータをReduce関数を利用して 1つにまとめればよいという感じですね.他のReduceの使用例は例えば次のようなものです.

#Reduceの例, 1~100までの整数の和
list <- 1:100
#Reduce(function(current, result), list)で,listの先頭から2つずつfunctionにより評価を行う.
list.sum <- Reduce(function(current, result) current + result, list)
#5050