Я пытаюсь 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)
}
Даже при том, что он работает просто отлично, мне было интересно, есть ли более элегантный способ выполнить работу?