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

如何使用pivot_wider创建双层表头提升回归模型结果表可读性

实现双层表头回归结果表方案

步骤1:调整宽表转换逻辑

你当前的pivot_wider写法会生成estimate_A、estimate_B这类列,所有估计值列在前、t值列在后,无法满足同模型两个指标相邻的需求。需要先把指标列拉长再转宽,让同模型的两列紧挨:

library(dplyr)
library(tidyr)

# 示例数据生成(和你提供的逻辑一致)
regression <- c(rep("A", 3), rep("B", 3), rep("C", 3), rep("D", 3), rep("E", 3), rep("F", 3))
attribute <- rep(c("b0", "b1", "b2"), 6)
estimate <- round(runif(n = 18, min = 0, max = 10), 2)
tstat <- round(runif(n = 18, min = 0, max = 10), 2)
tbl <- tibble(regression, attribute, estimate, tstat)

# 调整后的宽表转换
tbl_wide <- tbl %>%
  # 先把estimate、tstat转成统一的值列
  pivot_longer(cols = c(estimate, tstat), names_to = "indicator") %>% 
  # 按「模型-指标」的顺序生成列,同模型的两个列自动相邻
  pivot_wider(names_from = c(regression, indicator), 
              names_sep = "_",
              values_from = value)

步骤2:生成带双层表头的可交互/可导出表格

可以根据你的使用场景选择gt(适合HTML/PDF输出)或者flextable(适合Word/PPT输出)实现双层表头:

方案1:使用gt包实现

library(gt)

gt(tbl_wide, rowname_col = "attribute") %>% 
  # 设置第一层表头(模型名)
  tab_spanner(label = "模型A", columns = starts_with("A_")) %>% 
  tab_spanner(label = "模型B", columns = starts_with("B_")) %>% 
  tab_spanner(label = "模型C", columns = starts_with("C_")) %>% 
  tab_spanner(label = "模型D", columns = starts_with("D_")) %>% 
  tab_spanner(label = "模型E", columns = starts_with("E_")) %>% 
  tab_spanner(label = "模型F", columns = starts_with("F_")) %>% 
  # 简化第二层表头显示名,去掉模型前缀
  cols_label_with(fn = ~ sub("^[A-F]_", "", .x))

方案2:使用flextable包实现

library(flextable)

ft <- flextable(tbl_wide)
# 新增第一层表头行
ft <- add_header_row(ft,
                     values = c("", rep(c("模型A","模型B","模型C","模型D","模型E","模型F"), each = 2)),
                     top = TRUE)
# 合并同模型的第一层表头单元格
for(i in 1:6) {
  ft <- merge_at(ft, i = 1, j = (i*2):(i*2+1), part = "header")
}
# 修改第二层表头名称
ft <- set_header_labels(ft,
                        A_estimate = "estimate", A_tstat = "tstat",
                        B_estimate = "estimate", B_tstat = "tstat",
                        C_estimate = "estimate", C_tstat = "tstat",
                        D_estimate = "estimate", D_tstat = "tstat",
                        E_estimate = "estimate", E_tstat = "tstat",
                        F_estimate = "estimate", F_tstat = "tstat")
ft

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:09:02