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

如何在R中融合带有两行表头的数据框?

两行表头数据框的融合解决方案

核心思路

先拆分表头信息:把原数据框第一行的内容作为question_code,原列名作为question_number;再提取第二行及以后的内容作为实际数据;最后通过长格式转换工具完成融合,并关联表头信息。


步骤1:提取表头映射并清洗数据

首先把第一行的问题代码提取出来,同时重构数据框保留实际数值和ID/Order信息:

# 提取问题列的编号与对应code的映射表
code_map <- data.frame(
  question_number = names(data)[1:4],  # 取前4个问题列的列名
  question_code = as.character(data[1, 1:4])  # 第一行对应的code值
)

# 清洗数据:保留第二行及以后的实际数据,修正列类型
data_clean <- data[-1, ]
# 转换ID和Order为字符型(避免因子类型干扰)
data_clean$ID <- as.character(data_clean$ID)
data_clean$Order <- as.character(data_clean$Order)
# 转换问题列为数值型
data_clean[, 1:4] <- lapply(data_clean[, 1:4], as.numeric)

步骤2:用tidyverse的pivot_longer完成融合

如果你习惯使用tidyverse工具链,pivot_longer的语法更直观:

library(tidyverse)

# 融合数据并关联表头信息
result <- data_clean %>%
  # 将问题列转为长格式
  pivot_longer(
    cols = starts_with("Q"),
    names_to = "question_number",
    values_to = "response"
  ) %>%
  # 关联question_code
  left_join(code_map, by = "question_number") %>%
  # 调整列顺序匹配目标格式
  select(response, question_code, question_number, ID, Order) %>%
  # 按问题编号排序
  arrange(question_number)

步骤3:用reshape2的melt完成融合

如果你更熟悉reshape2包的melt函数,也可以这样实现:

library(reshape2)

# 融合数据
melted_data <- melt(
  data_clean,
  id.vars = c("ID", "Order"),
  variable.name = "question_number",
  value.name = "response"
)

# 关联表头信息并调整列顺序
result <- melted_data %>%
  left_join(code_map, by = "question_number") %>%
  select(response, question_code, question_number, ID, Order) %>%
  arrange(question_number)

最终结果验证

运行上述代码后,result数据框将完全匹配你需要的目标格式:

response question_code question_number ID Order
1         1           abc            Q1_1 AA    zz
2         2           abc            Q1_1 BB    ss
3         3           abc            Q1_1 CC    tt
4         4           abc            Q1_1 DD    qq
5         2           def            Q1_2 AA    zz
6         3           def            Q1_2 BB    ss
7         6           def            Q1_2 CC    tt
8         2           def            Q1_2 DD    qq
9         4           ghi            Q2_1 AA    zz
10        5           ghi            Q2_1 BB    ss
11        3           ghi            Q2_1 CC    tt
12        1           ghi            Q2_1 DD    qq
13        6           jkl            Q2_2 AA    zz
14        3           jkl            Q2_2 BB    ss
15        8           jkl            Q2_2 CC    tt
16        4           jkl            Q2_2 DD    qq

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:43:15