将不同文件夹中的CSV文件读取到数据框中,将现有CSV /数据框中的数据追加

时间:2018-08-03 19:07:23

标签: r csv dataframe

我正在尝试将csv文件读入R中的数据帧中。我已经设法遍历定义的文件夹,读取csv文件并分配它们,以便创建具有名称的数据帧。但是,如果一个数据框已经存在,我似乎无法追加数据。如果数据框已经存在,我想在底部添加新数据,而不仅仅是替换整个内容。

这是我到目前为止的工作:

fileName <- list.files("\\path\\subfolder", "*csv", full.names = FALSE)
fileName <- gsub(".csv", "", fileName)

for (i in 1:length(testPath)) {
tempVar <-  read.csv(testPath[i])
assign(fileName[i], tempVar)
}

这只会在一个文件夹中循环,我知道如何使其在多个文件夹中循环。但是,当我两次运行此代码时,它不会将数据追加到数据帧中,而是仅通过csv重新创建它们

感谢您的帮助!

更新:我发现下面有问题

1 个答案:

答案 0 :(得分:0)

我只是想通了。我对R很陌生,所以我做了一个变通办法,如果存在一个临时数据框,则将其创建,然后将其与旧的合并。如果将来有人在寻找代码,这就是我所做的。

它不漂亮,但是可以工作:

mainFilesOutputFolder <- paste("\\\\network\\folder\\", sep="")
scanSubFolders <- c("subfolder1", "subfolder2", "subfolder3")

for (k in 1:length(scanSubFolders)) {
  csvOutputs <- list.files(paste(mainFilesOutputFolder, scanSubFolders[k], "\\", sep=""), "*csv", full.names = TRUE)

  fileName <- list.files(paste(mainFilesOutputFolder, scanSubFolders[k], "\\", sep=""), "*csv", full.names = FALSE)
  fileName <- gsub(".csv", "", fileName)

  for (i in 1:length(csvOutputs)) {
    df_name <- fileName[i]
    if (exists(df_name)) {
      mergedDF <- rbind(get(fileName[i]),read.csv(csvOutputs[i]))
      assign(fileName[i], mergedDF)
      }else{
        #false
        assign(fileName[i], read.csv(csvOutputs[i]))
      } 
  }
}

希望这对某人有帮助!