R语言合并多份同结构xlsx文件时保留原有列名的问题咨询
R多Excel文件按列合并解决方案
可直接运行的修改后代码
library(purrr) library(writexl) library(readxl) # 匹配当前目录下所有xlsx格式文件 files <- list.files(pattern = "*.xlsx") # 读取第一个文件作为基准表,保留公共索引列与对应数值列 base_df <- read_excel(files[1]) # 遍历剩余所有文件,仅提取每个文件的第二列用于追加 append_cols <- files[-1] %>% map(~ { tmp <- read_excel(.x) tmp[, 2, drop = FALSE] }) # 合并基准表与所有追加列得到最终结果 mainDF <- cbind(base_df, append_cols) # 若合并结果中存在多余的`file`列,取消注释下行代码执行删除 # mainDF <- mainDF[, !names(mainDF) %in% "file"] # 导出合并后的文件 write_xlsx(mainDF, "merge.xlsx")
调整说明
- 若你之前使用
openxlsx包的read.xlsx函数读取文件,将代码中所有read_excel替换为read.xlsx即可,其余逻辑无需修改 - 调整了全量按列合并的逻辑,先以第一个文件为基准保留所有文件共有的第一列,后续仅追加每个文件的第二列,避免重复列冲突
- 读取文件时默认保留原文件表头作为合并后文件的列名,解决首行被识别为列名导致数据丢失的问题
内容的提问来源于stack exchange,提问作者maryam。
相关产品推荐
相关产品推荐

