複数のExcelまたはCSVファイルをいっぺんに読み込む方法

複数のExcelまたはCSVのファイルを読み込んで1つのデータフレームとしたいということがたまにあります。

そんなときは、1つづづ読み込んで、その後にbind_rowsというコマンドでくっつけることができます。

ところが、ファイルの数が多いと一つ一つ読み込むことがめんどくさくなってきます。そんなときは、Rスクリプトを書いて、それをデータソースとして登録することで解決できます。

Rで複数のファイルを読み込む

例えば、以下のような複数のExcelのファイルがこのフォルダーの下にあったとしましょう。

こちらが、これらのファイルをいっぺんに読み込むためのRスクリプトになります。

library(readxl)

files <- list.files(path = "~/Dropbox/Data/multiple_files", pattern = "*.xlsx", full.names = T)

tbl <- sapply(files, read_excel, simplify=FALSE) %>% 
bind_rows(.id = "id")

もし、Excelでなく、CSVファイルだった場合は以下のようになります。

library(readr)

files <- list.files(path = "~/Dropbox/Data/multiple_files", pattern = "*.csv", full.names = T)

tbl <- sapply(files, read_csv, simplify=FALSE) %>% 
bind_rows(.id = "id") 

違いは、 CSVを読み込むときは’readr’ というRパッケージの ‘read_csv’ という関数を使い、Excelを読み込むときは’readxl’ というRパッケージの’read_excel’ という関数を使っています。

どちらにしても、上のスクリプトは以下のことを行っています。

  1. 指定されたフォルダーの下にある、 ’xlsx’か’csv’で終わる全てのファイルのロケーション情報を’files’という変数の中に読み込みます。
  2. ’files’の中にあるファイルのロケーション情報をもとにファイルを一つ一つ読み込んで、その後それらをマージ(くっつける)します。

Exploratoryの中でRスクリプトをデータソースとして登録

Rスクリプトを書けるということは、Exploratoryの中でそれをデータソースとして登録することができます。

’R Script’をデータフレームのメニューから選びます。

Rスクリプト・エディターの中に上のスクリプトをコピーし貼り付けます。以下は、Excelファイルを読み込む例です。

あとは、「保存」ボタンを押すと、ひとつのデータフレームとしてインポートされます。

最後の列にもとのファイル名とロケーション情報(パス)を参照することができます。

テーブル・ビューだと以下のように見えます。