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

如何在gtsummary::tbl_summary中按分组列指定不同统计格式?

实现按分组列自定义统计格式的方法

可以实现这个需求,tbl_summary() 默认按变量(行)设置统计格式,但通过 gtsummary 包的modify_*系列函数可以针对特定分组列调整统计输出:

方法一:重新计算指定列的统计量(推荐)

直接对Group C列重新计算均值并格式化,避免字符串处理可能的误差:

library(gtsummary)
set.seed(123) # 固定随机种子,确保结果可复现

df <- data.frame(
     group = rep(c("A", "B", "C"), each = 10),
     var1 = rnorm(30, mean = 5, sd = 2),
     var2 = rnorm(30, mean = 7, sd = 1),
     var3 = rnorm(30, mean = 9, sd = 3)) 

# 先生成包含所有分组均值+标准差的基础表格
tbl <- df |>
  tbl_summary(
    by = group,
    statistic = all_continuous() ~ "{mean} ({sd})",
    digits = all_continuous() ~ 2 # 统一保留2位小数
  )

# 修改Group C列,仅显示均值
final_tbl <- tbl |>
  modify_column_statistic(
    columns = stat_C, # 目标分组列,命名规则为stat_+分组名
    fns = all_continuous() ~ ~mean(.x, na.rm = TRUE), # 重新计算均值
    fmt_fun = all_continuous() ~ style_number(digits = 2) # 格式化输出
  )

final_tbl

方法二:从现有统计字符串中提取均值

如果不想重新计算,可以直接从已生成的"均值 (标准差)"字符串中提取均值部分:

final_tbl <- tbl |>
  modify_table_body(
    mutate,
    stat_C = stringr::str_extract(stat_C, "^[^\\(]+") # 提取括号前的均值文本
  )

两种方法都能实现Group A、B显示均值 (标准差),Group C仅显示均值的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:12:39