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

R语言合并多CSV文件时如何保留文件夹路径为Site列

解决方案

以下是修改后的R代码,可实现从WaterTemp文件夹递归读取所有子CSV文件、提取前3列、统一表头并新增Site列存储文件所在文件夹路径:

# 设置根路径为WaterTemp文件夹
y_path   <- "Y:\\Public\\xx\\DataLoggers\\WaterTemp\\"

# 递归遍历所有子文件夹,获取所有CSV文件的完整路径
all_csv  <- list.files(path = y_path, pattern = '.csv$', full.names = TRUE, recursive = TRUE)

# 批量读取文件,同时处理列提取、表头设置和Site列添加
open_csv <- lapply(all_csv, function(x) {
  # 读取文件,跳过前2行
  dt <- data.table::fread(x, skip=2)
  # 提取前3列
  dt <- dt[, 1:3]
  # 设置统一表头
  data.table::setnames(dt, c("numb", "datetime", "temp"))
  # 添加Site列,值为当前文件所在的文件夹路径
  dt[, Site := dirname(x)]
  return(dt)
})

# 合并所有数据表格
one_df <- data.table::rbindlist(open_csv, fill=TRUE)

# 查看结果
one_df

关键修改说明

  • 递归读取文件:list.files添加recursive=TRUE参数,自动遍历WaterTemp下所有子文件夹的CSV文件;pattern='.csv$'确保只匹配后缀为.csv的文件,避免误匹配。
  • Site列生成:通过dirname(x)获取当前文件的父文件夹路径,直接添加为新列,无需额外处理。
  • 简化流程:将列提取、表头设置和Site列添加整合到文件读取的循环中,减少中间变量,提升代码效率。

预期输出示例

numb             datetime   temp Site
       <int>               <char>  <num> <char>
    1:     1      6/30/2014 13:37 17.272 Y:\\Public\\Fisher Group\\DataLoggers\\WaterTemp\\DarkCanyon\\DC Trib 1A
    2:     2      6/30/2014 14:37 18.438 Y:\\Public\\Fisher Group\\DataLoggers\\WaterTemp\\DarkCanyon\\DC Trib 1A
    3:     3      6/30/2014 15:37 18.152 Y:\\Public\\Fisher Group\\DataLoggers\\WaterTemp\\DarkCanyon\\DC Trib 1A
   ---                                  
46232:   917 07/29/24 03:41:52 PM 13.269 Y:\\Public\\Fisher Group\\DataLoggers\\WaterTemp\\DarkCanyon\\DC Trib 1A
46233:   918 07/29/24 04:10:09 PM     NA Y:\\Public\\Fisher Group\\DataLoggers\\WaterTemp\\DarkCanyon\\DC Trib 1A
46234:   919 07/29/24 04:10:12 PM     NA Y:\\Public\\Fisher Group\\DataLoggers\\WaterTemp\\DarkCanyon\\DC Trib 1A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:13:16