【R言語】複数ファイル(csv)を読み込む方法
背景
データ分析する際にあるあるな、複数ファイル・データを一つのデータセットにまとめてRに読み込む方法を紹介します。2-3個のファイルであればまあ手作業でなんとかという気もしますが、例えば100個くらいファイルだと厳しいですよね。
手順
まずは必要なパッケージを読み込みます。pacmanというパッケージは読み込みだけでなく、必要に応じて(もしパッケージのインストールがされていない場合)、インストールも実行したうえで読み込んでくれるので便利です。
# パッケージの読み込み
library(pacman) # パッケージをインストール及び読み込む便利なパッケージ
p_load(tidyverse)
次にサンプルファイルを生成していきます。tempdirに1925~2024年のid, 日付, ブランド, 売上を持つ100行のcsvファイルを作っていきます。
# 一時フォルダを作成
temp_dir = tempdir()
# 関数を定義
create_data = function(year) {
id = sample(1:10, 100, replace = TRUE) # idは1~10の間でランダムに生成
start_date = ymd(paste0(year, "-01-01"))
end_date = ymd(paste0(year, "-12-31"))
date = sample(seq(start_date, end_date, by = "1 day"), 100, replace = TRUE) # 日付もランダムに生成
brand = sample(letters[1:5], 100, replace = TRUE) # ブランドはa~eまでの間でのランダム に生成
amount = round(runif(100, 1000, 10000))
tibble(id, date, brand, amount)
}
# データを生成してCSVファイルに書き出し
for (year in 1925:2024) {
data = create_data(year)
file_name = file.path(temp_dir, paste0("data_", year, ".csv"))
write.csv(data, file_name, row.names = FALSE)
}
すると以下のようなデータをもつファイルが100つ(100年分)生成されます。
そしてファイルを順番に読み込み縦に積む処理を行います。ちゃんと10000行(100行×100年分)になっていますね。
# CSVファイルを読み込み、縦に積み上げる
all_data = list.files(temp_dir, pattern = "data_", full.names = TRUE) |>
map_dfr(read_csv)
# 行列の数を確認
all_data |> dim()
[1] 10000 4
副業やってます
副業としてデータ分析やR言語を用いた業務効率化・自動化対応などをやっていますので、もしご興味ある方は以下のサイトからお問い合わせください。
拙い記事でしたが、ご一読ありがとうございました!
いいなと思ったら応援しよう!
よろしければサポートお願いします。