複数の .csv ファイルを一度にインポートするにはどうすればいいですか? 質問する

複数の .csv ファイルを一度にインポートするにはどうすればいいですか? 質問する

複数の data.csv ファイルを含むフォルダーがあり、各ファイルには同じ数の変数が含まれていますが、それぞれ異なる時刻からのものです。R では、それらをすべて個別にインポートするのではなく、同時にインポートする方法はありますか?

私の問題は、インポートするデータ ファイルが約 2000 個あり、次のコードを使用してそれらを個別にインポートする必要があることです。

read.delim(file="filename", header=TRUE, sep="\t")

あまり効率的ではありません。

ベストアンサー1

次のような結果になると、各データ フレームが 1 つのリスト内の個別の要素として表示されます。

temp = list.files(pattern="\\.csv$")
myfiles = lapply(temp, read.delim)

これは、これらの CSV が単一のディレクトリ (現在の作業ディレクトリ) にあり、すべてに小文字の拡張子が付いていることを前提としています.csv

これらのデータ フレームを 1 つのデータ フレームに結合する場合は、、またはなどを使用して他の回答のソリューションを参照してくださいdo.call(rbind,...)dplyr::bind_rows()data.table::rbindlist()

各データ フレームを別々のオブジェクトにしたい場合は、多くの場合は推奨されませんが、次のように実行できますassign

temp = list.files(pattern="\\.csv$")
for (i in 1:length(temp)) assign(temp[i], read.csv(temp[i]))

または、 を使用せずにassign、(1) ファイル名をクリーンアップする方法と (2) の使用方法を示すためにlist2env、次の操作を試すことができます。

temp = list.files(pattern="\\.csv$")
list2env(
  lapply(setNames(temp, make.names(gsub("\\.csv$", "", temp))), 
         read.csv), envir = .GlobalEnv)

しかし、繰り返しになりますが、多くの場合、それらを 1 つのリストに残しておく方がよいでしょう。

おすすめ記事