将来自不同文件夹的多个 csv 文件(相似名称)合并到一个 csv 中并逐行绑定它们 [关闭]

Posted

技术标签:

【中文标题】将来自不同文件夹的多个 csv 文件(相似名称)合并到一个 csv 中并逐行绑定它们 [关闭]【英文标题】:Combine multiple csv files (similar names) from different folders into one csv and bind them row wise [closed] 【发布时间】:2021-06-03 18:56:23 【问题描述】:

我有不同的文件夹,其中包含不同月份的数据,但 csv 文件名相同。请注意,这些文件具有相似的列结构,因此我想将它们逐行合并。

c:\Folder1\abc.csv
c:\Folder2\abc.csv
c:\Folder3\abc.csv

实际上有几个文件夹,因此我很困惑如何有效地执行他的任务。我不希望将每个文件数据复制粘贴到一个 csv 中的麻烦。所以我认为有一个批处理脚本或 R 代码可以快速执行此功能。

【问题讨论】:

library(tidyverse); map_dfr(1:3, ~ read_csv(glue::glue("C:/Folder.x/abc.csv"))) 欢迎来到 ***。请阅读您在注册时被要求填写的tour。也请阅读How to Ask 一个问题。然后回来edit您的问题并提供minimal reproducible example。 【参考方案1】:

您可以将list.filespatternrecursive = TRUE 一起使用。

filenames <- list.files(pattern = 'abc\\.csv', recursive = TRUE)
result <- purrr::map_df(filenames, read.csv, .id = 'id')

result 会将所有数据合并到一个文件中,并带有一个附加列 id,它将区分每个文件夹中的行。

【讨论】:

太棒了!然而,合并后的列名有些改变,例如如果时间戳列是时间戳,在新的合并 csv 中它显示为“time.stamp..” 那是因为你的列名中有空格,R 不喜欢这样,因此它用'.' 替换空格。你可以使用result &lt;- purrr::map_df(filenames, readr::read_csv, .id = 'id') 太棒了!保留原始列名......所以基本上 map_df 而不是 map_dfr 将数据映射到行(?)。 我在这个系列中的最后一个问题是:如果我需要从我正在读取的每个 csv 文件中选择特定的列,然后使用与上述相同的方法组合文件。 是的,map_dfr 做同样的工作。您可以使用select 选择特定列。 result &lt;- purrr::map_df(filenames, ~readr::read_csv(.x) %&gt;% select(col1, col2), .id = 'id')

以上是关于将来自不同文件夹的多个 csv 文件(相似名称)合并到一个 csv 中并逐行绑定它们 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将多个 CSV 文件读入单独的数据帧

怎么用命令行把多个csv文件合并成一个xls或者xlsx文件

java编程将若干个excel文件合并成一个csv文件,文件变大的很多,怎么解决

如何用批处理命令把1个文件夹里多个csv文件的某一列合并成一个txt

如何使用 Pandas 将多个 csv 文件中的单个数据列合并为一个?

Python pandas 保存多个不同名称的 CSV