You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中基于ID列合并大量CSV文件?

在R中批量合并5000个共享ID列的CSV文件

你不需要手动写循环处理,用Reduce(基础R)或者tidyverse工具包的reduce函数就能高效完成批量合并,以下是两种可行方案:

方案一:基础R实现(无需额外安装包)

setwd("C:/Desktop/CSVs")
# 修正匹配规则,确保只选中后缀为.csv的文件
all_files <- list.files(pattern = "\\.csv$")

# 读取所有CSV文件到数据框列表
df_list <- lapply(all_files, function(file_path) {
  read.csv(file_path, stringsAsFactors = FALSE)
})

# 基于ID列批量合并所有数据框
# all=TRUE确保保留所有ID(如果不同文件ID有差异时适用),若ID完全一致可改为all.x=TRUE
merged_df <- Reduce(function(df1, df2) merge(df1, df2, by = "ID", all = TRUE), df_list)

# 保存合并后的文件
write.csv(merged_df, "merged_all.csv", row.names = FALSE)

方案二:tidyverse实现(更简洁高效,适合大数量文件)

如果处理5000个文件,推荐用tidyverse的工具,读取和合并效率更高:

# 首次使用需先安装工具包
# install.packages("tidyverse")
library(tidyverse)

setwd("C:/Desktop/CSVs")
all_files <- list.files(pattern = "\\.csv$")

# 链式操作:读取所有文件 → 批量合并
merged_df <- all_files %>%
  map(read_csv) %>% # read_csv比基础read.csv更快,内存占用更低
  reduce(full_join, by = "ID") # full_join对应merge的all=TRUE,若ID完全一致可改用inner_join

# 保存结果
write_csv(merged_df, "merged_all.csv")

关键说明

  • 两种方案都避免了手动循环,Reduce/reduce会自动迭代合并列表中的所有数据框
  • 正则\\.csv$能精准匹配CSV文件,避免误选中文件名含"csv"的非目标文件
  • 如果所有文件的ID完全一致,使用inner_join(tidyverse)或merge(..., all=FALSE)可以减少内存消耗

内容的提问来源于stack exchange,提问作者SpookyDLX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:10:39