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

R语言如何对Excel各工作表执行row_to_names后合并多表

实现方案

将你已验证的单工作表处理逻辑封装为自定义函数,遍历所有工作表时对每个表调用该函数,处理完成后自动合并即可。

完整代码
# 加载所需依赖包
library(tidyverse)
library(readxl)
library(janitor) # row_to_names函数来自该包,未安装可先运行install.packages("janitor")

# 封装单工作表处理逻辑,完全复用你已验证的操作a逻辑
process_sheet <- function(sheet_name, file) {
  # 读取单个工作表,此时原A1单元格的id会成为第一列的默认列名
  df <- read_xlsx(file, sheet = sheet_name)
  # 提取原A1存储的id值
  sheet_id <- colnames(df)[1]
  # 执行表头转换+新增id列操作
  processed_df <- df %>%
    row_to_names(1) %>%
    mutate(id = sheet_id)
  return(processed_df)
}

# 合并所有处理后的工作表
file_path <- "mydata.xlsx"
combined <- excel_sheets(file_path) %>%
  map_df(~process_sheet(.x, file = file_path))

补充说明
  • 如果你习惯使用openxlsx包读取文件,只需将read_xlsx替换为read.xlsx即可,函数内部处理逻辑不需要调整
  • 如果合并时出现列类型冲突报错,可以在mutate(id = sheet_id)后新增一行mutate(across(everything(), as.character))先统一所有列的类型为字符型,合并后再按需转换类型
  • 最终输出的combined即为所有工作表处理完成后的合并数据集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:18:02