【问题标题】:Read CSV files from different folders into data frames, append data from existing CSVs/dataframes将不同文件夹中的 CSV 文件读入数据框,从现有 CSV/数据框追加数据
【发布时间】:2018-08-03 19:07:23
【问题描述】:

我正在尝试将 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 再次创建它们

感谢您的帮助!

更新:我想通了,见下文

【问题讨论】:

  • 在这个广为流传的副本中有很多选择(尽管您应该避免使用 assign 的任何解决方案):stackoverflow.com/q/11433432/324364
  • 嗨,这篇文章是我用作上述代码基础的文章。但是,它在遍历不同的文件夹时不会将任何数据附加到现有数据帧。还尝试了使用 list2env(lapply())) 的更新方法,如果我多次运行代码,我无法获取要附加的数据
  • 那里的解决方案没有以最清晰的方式组织,但其中许多使用 do.call(rbind,...)dplyr::bind_rows 或 data.table 中的等效项来执行您想要的操作。都在那里,你只需要仔细而缓慢地阅读,因为,正如我所说,它的组织不够干净。
  • 那里,我在那里编辑了第一个答案,这可能是你真正冒险的唯一一个。希望它现在为您指明一个更有帮助的方向。
  • @robs:这可能也有帮助 stackoverflow.com/a/48105838/786542

标签: r csv dataframe


【解决方案1】:

我刚刚想通了。我对 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]))
      } 
  }
}

希望这对某人有所帮助!

【讨论】:

猜你喜欢
  • 2021-05-27
  • 2018-07-10
  • 1970-01-01
  • 2020-05-02
  • 2017-03-29
  • 2023-01-15
  • 2020-12-26
  • 2023-01-23
  • 1970-01-01
相关资源
最近更新 更多