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

R语言合并列名存在差异的多份Excel调研文件的实现方法

R批量合并列名前缀匹配的调研Excel文件方案

核心逻辑

原有适配标准化调研1的批量合并逻辑不需要大改,只需要在单文件读取环节增加一步按前缀统一重命名目标列的处理:把所有文件中以指定前缀开头的列重命名为统一的固定列名,处理后所有文件列名完全一致,就可以直接按原来的行绑定逻辑完成合并。

可直接运行的修改后代码

library(readxl)

my_files <- list.files(pattern = "*.xls")

Survey <- lapply(my_files, function(i){
  x = read_excel(i, sheet=1, skip = 14)
  
  # 按前缀统一重命名行为题项列
  colnames(x) <- ifelse(
    startsWith(colnames(x), "4(a)."), "q4a",
    ifelse(
      startsWith(colnames(x), "4(b)."), "q4b",
      ifelse(
        startsWith(colnames(x), "4(c)."), "q4c",
        colnames(x) # 其余非目标列保留原列名
      )
    )
  )
  
  # 可选:增加异常校验,识别缺失目标题项的文件
  target_cols <- c("q4a", "q4b", "q4c")
  miss_col <- setdiff(target_cols, colnames(x))
  if (length(miss_col) > 0) {
    warning(sprintf("文件%s缺失题项列:%s", i, paste(miss_col, collapse = "、")))
  }
  
  x$file = i
  x
})

Survey = do.call("rbind.data.frame", Survey)

后续统计说明

合并完成后,所有样本对应4(a)/4(b)/4(c)题的得分会分别存在q4a/q4b/q4c三列中,直接对这三列计算均值即可得到对应题项的平均得分。如果后续需要增加其他前缀规则的题项合并,只需要在列重命名的嵌套判断里补充对应前缀和统一后的列名即可。

注:代码中使用的startsWith()是R原生基础函数,不需要额外安装依赖包,匹配规则为严格匹配字符串开头,不会出现前缀误匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:54:18