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

如何让gtsummary::tbl_summary()的by参数以行而非列形式展示?

解决gtsummary中by参数内容以行形式呈现的问题

针对你需要将by参数对应的分组内容(示例中的grade)以行而非列展示,且适配变量嵌套场景的需求,可以使用tbl_strata()函数实现,具体代码如下:

library(tidyverse)
library(gtsummary)

trial %>%
  select(stage, grade) %>%
  # 按grade分层处理
  tbl_strata(
    strata = grade,
    .tbl_fun = ~.x %>% 
      select(stage) %>% 
      tbl_summary() %>%
      # 将当前分层的grade值作为行标题
      modify_header(label = paste0("**Grade: ", .y, "**"))
  ) %>%
  # 移除多余的跨列标题
  modify_spanning_header(everything() ~ NA) %>%
  # 优化分层标题样式,增强辨识度
  modify_table_styling(
    columns = label,
    rows = str_detect(label, "Grade:"),
    style = list(
      text_format("bold"),
      cell_borders(top = TRUE)
    )
  )

代码说明:

  • tbl_strata():核心函数,按指定的grade变量分层,对每个分组独立执行汇总逻辑
  • 分层内仅保留待汇总的stage变量,生成对应汇总表,并将当前分组的grade值插入为该部分的标题行
  • 后续样式调整函数用于优化表格视觉效果,让分层标题更醒目,同时适配你提到的嵌套场景(特定stage仅出现在特定grade中),不会出现无效的空值内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:10:35