如何批量合并同文件夹下多CSV文件,将变动列头转换为新列?
R语言多CSV批量合并解决方案
使用tidyverse套件可以简洁实现需求,核心通过宽表转长表处理动态Time列,同时规避原rbind列名不匹配的问题。
前置准备
如果未安装依赖包先执行安装:
install.packages("tidyverse")
完整代码
# 加载依赖 library(tidyverse) # 批量读取、处理、合并一步完成 df_merged <- list.files(pattern = "*.csv") %>% map_dfr(~{ # 读取单个CSV文件 read_csv(.x, show_col_types = FALSE) %>% # 宽转长:识别Time开头的动态列,提取列名为timeperiod,列值存入Values pivot_longer( cols = starts_with("Time"), names_to = "timeperiod", values_to = "Values" ) %>% # 仅保留需要的列,自动丢弃无关的unneeded类列 select(X, date, distance.code, location.code, timeperiod, Values) }) # 导出合并结果 write_csv(df_merged, "合并结果.csv")
适配说明
如果你的动态时间列并非统一以Time开头,可以修改pivot_longer的列匹配规则,自动识别固定列外的目标列:
pivot_longer( cols = -c(X, date, distance.code, location.code, starts_with("unneeded")), names_to = "timeperiod", values_to = "Values" )
内容的提问来源于stack exchange,提问作者parksnrec1
相关产品推荐
相关产品推荐

