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

如何使用dplyr在R中读取含两行表头的Excel文件并合并表头

R 中使用 dplyr 处理双行表头 Excel 数据方法

核心处理逻辑:读取时跳过自动表头识别,单独提取前两行表头内容拼接为正式列名,再清洗后续数值数据即可。

  • 加载依赖包
    处理需要用到readxl读取Excel文件、dplyr做数据清洗,二者同属tidyverse生态,适配性好:
    library(dplyr)
    library(readxl)
    
  • 原始数据全量读取
    读取时设置col_names = FALSE,不将首行识别为表头,避免丢失第二行的单位信息:
    # 替换为你自己的Excel文件路径,sheet参数可指定对应工作表序号/名称
    raw_data <- read_excel("your_file_path.xlsx", col_names = FALSE)
    
    读入的raw_data结构如下:前两行为表头内容(第一行是指标名、第二行是单位),第三行及以后为实际观测值。
  • 拼接生成单行表头
    提取前两行内容,按列拼接为“指标名 (单位)”格式的列名:
    final_colnames <- raw_data %>%
      slice(1, 2) %>% # 选取前两行表头
      # 逐列拼接两行内容,中间用空格分隔,trimws用于去除首尾多余空格
      summarise(across(everything(), ~paste(trimws(.x[1]), trimws(.x[2])))) %>%
      unlist(use.names = FALSE)
    
    生成的final_colnames即为目标列名:c("Gram (g)", "Nanogram (ng)")
  • 清洗得到最终数据集
    剔除前两行表头内容,替换列名,同时将文本格式的数值转为数值类型:
    clean_data <- raw_data %>%
      slice(-1, -2) %>% # 删除前两行表头行
      setNames(final_colnames) %>% # 替换为拼接好的列名
      mutate(across(everything(), as.numeric)) # 统一转为数值类型
    

处理完成后clean_data的输出完全符合预期格式:

# A tibble: 2 × 2
  `Gram (g)` `Nanogram (ng)`
       <dbl>           <dbl>
1          1               2
2          1               4

如果你的表头行数、拼接规则有调整,只需要修改slice选取的行号、paste里的拼接格式即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:51:13