Я пытаюсь merge
несколько data.frames
в один data.frame
. Поскольку у меня есть целый список файлов, я пытаюсь сделать это с помощью структуры цикла.
Пока петлевой подход работает отлично. Однако, это выглядит довольно неэффективно, и мне интересно, есть ли более быстрый и легкий подход.
Вот сценарий:
У меня есть каталог с несколькими .csv
файлами. Каждый файл содержит тот же идентификатор, который может использоваться как переменная слияния. Поскольку файлы довольно большие по размеру, я думал читать каждый файл по одному в R вместо того, чтобы сразу читать все файлы.
Поэтому я получаю все файлы каталога с list.files
и читаю в первых двух файлах. Впоследствии я использую merge
, чтобы получить один data.frame
.
FileNames <- list.files(path=".../tempDataFolder/")
FirstFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[1], sep=""),
header=T, na.strings="NULL")
SecondFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[2], sep=""),
header=T, na.strings="NULL")
dataMerge <- merge(FirstFile, SecondFile, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"),
all=T)
Теперь я использую цикл for
, чтобы получить все оставшиеся файлы .csv
и merge
их в уже существующую data.frame
:
for(i in 3:length(FileNames)){
ReadInMerge <- read.csv(file=paste(".../tempDataFolder/", FileNames[i], sep=""),
header=T, na.strings="NULL")
dataMerge <- merge(dataMerge, ReadInMerge, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"),
all=T)
}
Несмотря на то, что это работает отлично, мне было интересно, есть ли более элегантный способ выполнить работу?