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

如何实现R语言gtsummary包tbl_summary输出结果的转置

你可以通过将原始数据集转换为长格式,结合gtsummary的tbl_strata()函数实现所需的行列互换效果,完整可运行代码如下:

library(tidyverse)
library(gtsummary)
set.seed(42)
# 注意原始样例数据生成时需加replace=T,否则200行数据仅前4行x/y/z有有效值
dat <- data.frame(
  x = sample(1:4, 200, replace = TRUE),
  y = sample(1:4, 200, replace = TRUE),
  z = sample(1:4, 200, replace = TRUE),
  time = runif(200, min = 2, max = 25)
)

# 转换为长格式,统一处理三类分组
dat_long <- dat %>%
  pivot_longer(
    cols = c(x, y, z),
    names_to = "group_type",
    values_to = "group_level",
    names_transform = list(
      group_type = ~case_match(
        .x,
        "x" ~ "Follow-up time (Group 1)",
        "y" ~ "Follow-up time (Group 2)",
        "z" ~ "Follow-up time (Group 3)"
      )
    )
  )

# 分层生成统计结果后自动按列合并
result_tbl <- dat_long %>%
  tbl_strata(
    strata = group_type,
    .tbl_fun = ~.x %>%
      tbl_summary(
        by = group_level,
        include = time,
        statistic = list(all_continuous() ~ "{median} ({p25}, {p75})")
      ) %>%
      modify_header(all_stat_cols() ~ "**{level}**") %>%
      modify_footnote(all_stat_cols() ~ NA)
  ) %>%
  # 移除冗余的行标签前缀
  modify_body_row_label(~str_remove(.x, "time"))

# 查看最终结果
result_tbl

运行代码后输出的表格行对应分组层级1~4,列对应三个分组的随访时间中位数(四分位距)统计值,和预期效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:00