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

如何在R的gtsummary中将主标题移至特征列左侧新列?

gtsummary实现主标题与子项分离的解决方法

核心思路

借助gtsummary的表格修改工具,结合dplyr的数据处理能力,将分类变量的主标题(如Grade、种族)提取为独立新列,同时保留子项(如I/II/III、不同种族类别)在原特征列中,实现主副标题的拆分显示。

代码实现

1. 加载依赖包并构造示例数据

library(gtsummary)
library(dplyr)

# 构造包含分级变量、人口统计学变量的示例数据
df <- tibble(
  Grade = factor(c("I", "II", "III", "I", "II"), levels = c("I", "II", "III")),
  age = rnorm(50, 50, 10),
  race = factor(c("亚洲人", "白人", "黑人", "亚洲人", "白人"),
                levels = c("亚洲人", "白人", "黑人"))
)

2. 生成初始汇总表

# 按Grade分组生成人口统计学变量的汇总表
initial_tbl <- df %>%
  tbl_summary(
    by = Grade,
    include = c(race, age)
  )

3. 修改表格结构实现分离

# 拆分主标题与子项,生成目标表格
final_tbl <- initial_tbl %>%
  modify_table_body(
    ~ .x %>%
      # 移除原有的主标题行,后续将主标题放入新列
      filter(row_type != "label") %>%
      # 添加新列,填充对应变量的主标题
      mutate(分类主标题 = parent_label) %>%
      # 将新列移至特征列(label)左侧
      relocate(分类主标题, .before = label)
  ) %>%
  # 设置列标题,替换为你需要的名称(如"Grade"或"种族")
  modify_header(
    分类主标题 = "**Grade/种族**",
    label = "**特征**"
  )

# 查看最终表格
final_tbl

自定义调整说明

  • 如果仅需针对特定变量(如仅处理种族)拆分,可在mutate中添加条件筛选:
    mutate(
      分类主标题 = case_when(
        parent_label == "种族" ~ parent_label,
        TRUE ~ label
      )
    )
    
  • 若原表格中主标题与子项有特定分隔符(如换行、短横线),可结合stringr包的str_split()或str_remove()函数进一步清洗特征列内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:23:16