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

R语言如何批量合并多数据集并为列添加来源后缀

R语言批量合并100个结构相同数据集为宽表实现方案

以下方案全程采用批量列表操作,不需要手动处理单个数据集,运行效率高,适配百万行级别的大数据量场景。

步骤1:批量收集所有数据集到列表

不要逐个手动调用数据集,先把所有分散的数据集统一加载到列表对象里,方便后续批量处理:

# 生成所有数据集对应的对象名,匹配当前命名规则:第一个为data,后续为data2~data100
df_obj_names <- c("data", paste0("data", 2:100))
# 批量从全局环境读取所有数据集到列表
df_list <- mget(df_obj_names, envir = .GlobalEnv)
# 给列表元素统一命名为data1~data100,和后缀标识对应
names(df_list) <- paste0("data", 1:100)

如果数据集是存在本地文件夹里的csv/rds文件,把上面读取部分替换成批量读文件的代码即可,后续逻辑完全通用。

步骤2:批量给列添加数据集标识后缀

遍历列表里的每个数据集,给id和iq两列加上对应后缀,完全匹配要求的列名格式:

df_list <- lapply(names(df_list), function(tag){
  tmp_df <- df_list[[tag]]
  # 按列名匹配重命名,不受列顺序影响,避免出错
  colnames(tmp_df)[colnames(tmp_df) == "id"] <- paste0("id_", tag)
  colnames(tmp_df)[colnames(tmp_df) == "iq"] <- paste0("iq_", tag)
  return(tmp_df)
})

步骤3:合并为宽数据集

根据数据特征选对应合并方式即可:

  • 场景1:所有数据集行数完全一致、行顺序严格对应(和给出的示例结构一致),用按列拼接的方式,速度最快:
library(dplyr)
wide_result <- bind_cols(df_list)

# 如果需要严格按照「所有id列在前、所有iq列在后」的格式排列列顺序,执行以下代码调整
final_col_order <- c(paste0("id_data", 1:100), paste0("iq_data", 1:100))
wide_result <- wide_result[, final_col_order]
  • 场景2:不同数据集的id顺序可能错乱、存在id缺失,需要按id值匹配避免行错位:这种情况先保留公共id列做匹配合并,最后再重命名列、调整顺序即可,避免数据对应错误。

校验结果

合并完成后可以运行以下代码检查列名是否符合要求:

print(names(wide_result))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:21:45