広告/統計/アニメ/映画 等に関するブログ

広告/統計/アニメ/映画 等に関するブログ

【備忘録】Rでディレクトリ配下の複数ファイルからデータをデータフレームに格納する

ディレクトリのファイルパスを指定する

例えば、カレントディレクトリの下に「data」というフォルダを作ってその中から読ませたければ、

path <- 'data/'

などとしておく

※参考にしたサイト

R:list.filesによるファイルパス取得あれこれ。 - Qiita

ディレクトリ配下のファイルの一覧を取得する

読み込ませたいファイルの一覧をリストに格納する

fl <- list.files(path,full.names=T)

※参考にしたサイト

Rでcsvをまとめて読み込む | 分析のおはなし。

読み込み用の関数を作る

例えば、GAのデータであれば、冒頭の6行にコメントが入っているので、それをスキップし、かつCSVファイルの文字コードutf-8なのでそれも指定して読み込む

return (df)を忘れないように

readfiles <- function(x){
  df <- read.csv(x,
                 header=T,
                 fileEncoding = "UTF-8",
                 stringsAsFactors = F,
                 skip=6)
  
  colnames(df) <- c("参照元メディア",
                     "日付",
                    "ページビュー数",
                    "ユーザー")
  df$ユーザー <- as.numeric(sub(",","",df$ユーザー))
  df$ページビュー数 <- as.numeric(sub(",","",df$ページビュー数))
  df$Date <- as.Date(strptime(df$日付,"%Y%m%d"))
  return(df)
}

※その他、Googleアナリティクスのデータはデータが数字にならずにカンマが入っていたり、日付が上手く日付データになっていなかったりのトラップがあるので、読み込み時に対応しておくのが良い。

※参考にしたサイト

qiita.com

関数を使ってファイルをよみこむ

for 分を使って、先程のファイルリストの長さの分だけ繰り返しを適応する。 rbindで繋げていく

df_hoge <- as.data.frame(NULL)
for (i in 1:length(fl)){
  df <- readfiles(fl[i])
  df_hoge <- rbind(df_hoge,df)
}
df <- as.data.frame(NULL)

※参考にしたサイト

blog.okazuki.jp

Rでディレクトリ内のcsvをループで読み込み | バスストップ日誌