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

如何在gtsummary中创建多层Spanner表头(解决合并后子表头丢失问题)

分位数回归合并表多层表头实现方案

基于gt包的解决方案(推荐)

如果使用gt包制作表格,核心是先整理好合并后的数据集,再通过层级表头(tab_spanner的level参数)实现双层结构:

  1. 数据预处理

    • 分别将AREA和PROP的分位数回归结果整理为宽格式,列名区分组别:比如AREA的列命名为area_q10、area_q50、area_q90,PROP的列命名为prop_q10、prop_q50、prop_q90。
    • 合并两个数据集,确保行(自变量)完全对齐。
  2. 构建多层表头

library(gt)

# 假设合并后的数据集为combined_df
final_table <- combined_df %>%
  gt() %>%
  # 先添加下层子表头(QR分位数)
  tab_spanner(label = "QR 10%", columns = c(area_q10, prop_q10)) %>%
  tab_spanner(label = "QR 50%", columns = c(area_q50, prop_q50)) %>%
  tab_spanner(label = "QR 90%", columns = c(area_q90, prop_q90)) %>%
  # 添加上层主表头(Area/Proportion),指定层级为1(高于子表头)
  tab_spanner(
    label = md("**Area**"),
    columns = starts_with("area_"),
    level = 1
  ) %>%
  tab_spanner(
    label = md("**Proportion**"),
    columns = starts_with("prop_"),
    level = 1
  ) %>%
  # 可选:加粗主表头增强区分度
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_column_spanners(spanner_level = 1)
  )

基于modelsummary包的解决方案

如果用modelsummary生成回归表,可通过分表生成再合并的方式实现:

library(modelsummary)

# 分别定义AREA和PROP的分位数回归模型列表
area_qr_models <- list(qr10_area, qr50_area, qr90_area)
prop_qr_models <- list(qr10_prop, qr50_prop, qr90_prop)

# 生成带分子表头的分表(不添加外层主表头)
tab_area <- modelsummary(area_qr_models, output = "gt", spanner = c("QR 10%", "QR 50%", "QR 90%"))
tab_prop <- modelsummary(prop_qr_models, output = "gt", spanner = c("QR 10%", "QR 50%", "QR 90%"))

# 合并表格并添加上层主表头
final_tab <- gt_merge_stack(tab_area, tab_prop) %>%
  tab_spanner(
    label = md("**Area**"),
    columns = 1:3, # 对应AREA的3个分位数列
    level = 1
  ) %>%
  tab_spanner(
    label = md("**Proportion**"),
    columns = 4:6, # 对应PROP的3个分位数列
    level = 1
  )

关键逻辑

不要提前给单个表格添加完整的spanner结构,而是先确保合并后的列按「组别-分位数」或「分位数-组别」的逻辑排列,再通过tab_spanner的level参数区分主、子表头层级,这样就能避免合并时子表头丢失,同时保证结构符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:23:12