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

R语言如何批量读取指定CSV文件、筛选行列后合并为数据框

R语言批量处理年度CSV文件并自动合并方案

核心逻辑是把单文件读取、裁剪、合并的流程封装为自动化步骤,无需手动逐个声明数据框,自动适配任意数量的结果文件。


完整实现代码

# 无需额外安装第三方包,基于R基础函数实现
# --------------------------
# 1. 抓取目录下所有目标CSV文件
# --------------------------
file_list <- list.files(
  path = "C:/your/result/csv/path",  # 替换为你的CSV文件存放目录,R中路径请使用正斜杠/
  pattern = "^data_\\d+\\.csv$",     # 正则匹配文件名规则:仅识别data_+数字.csv格式的结果文件,过滤无关文件
  full.names = TRUE                  # 自动补全文件完整路径,无需手动拼接
)

# --------------------------
# 2. 定义单文件处理规则
# --------------------------
process_csv <- function(file) {
  # 严格保留原有读取参数:跳过首行、读取表头
  raw_df <- read.csv(file, header = TRUE, skip = 1)
  # 按原有规则截取行列:前365行,第2/4/6/8/10列
  cut_df <- raw_df[1:365, c(2, 4, 6, 8, 10)]
  # 可选:新增列标记数据来源文件,后续核对数据更方便
  cut_df$source_file <- basename(file)
  return(cut_df)
}

# --------------------------
# 3. 批量处理+自动合并
# --------------------------
# 自动遍历所有匹配到的文件,逐次执行处理逻辑
processed_list <- lapply(file_list, process_csv)
# 一次性按行合并所有处理完的片段
total <- as.data.frame(do.call(rbind, processed_list))

关键问题适配说明

  • 目标文件筛选:通过list.files的pattern参数用正则规则匹配文件名,只会读取符合命名规则的结果文件,不会混入目录下其他无关CSV。如果你的文件名规则有变化,直接修改pattern的匹配规则即可,比如要匹配所有以year_record开头的CSV,可改为pattern = "^year_record.*\\.csv$"。
  • 跳过首行要求:skip=1参数直接写入统一的读取逻辑中,所有文件读入时都会自动执行跳过首行的操作,不会出现遍历读取时漏设参数的问题。
  • 文件数量自适应:整个流程不需要提前声明文件数量,不管模型生成3个还是50个结果文件,只要存放在指定目录、符合文件名匹配规则,直接运行代码即可完成全流程处理,不需要手动修改rbind的拼接参数。

可选优化提示

  • 如果需要兼容闰年366天的数据,可将行截取逻辑改为cut_df <- raw_df[1:min(366, nrow(raw_df)), c(2, 4, 6, 8, 10)],避免行数不足触发下标越界报错。
  • 如果文件量较大(超过20个),可以将最后合并的代码替换为data.table::rbindlist(processed_list),合并速度会有明显提升(需提前安装data.table包)。
  • 如果担心个别文件损坏导致流程中断,可以在read.csv外层添加tryCatch容错逻辑,出错时打印问题文件名即可跳过异常文件继续处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:14:51