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

使用gtsummary如何格式化预计算的汇总统计数据框?

实现方案

可以通过gtsummary便捷实现该需求,复用性优于直接使用gt,多组对比场景下只需少量修改即可扩展。

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

library(dplyr)
library(gtsummary)

# 构造两组示例统计数据,模拟两种方法的对比结果
stats_df1 <- tribble(
  ~name, ~est, ~ci.lwr, ~ci.upr,
  "bias", 1.2, 0.9, 1.5,
  "loa.upr", 4, 3.5, 4.5,
  "loa.lwr", -3, -3.5, -2.5
)

stats_df2 <- tribble(
  ~name, ~est, ~ci.lwr, ~ci.upr,
  "bias", 0.8, 0.5, 1.1,
  "loa.upr", 3.2, 2.7, 3.7,
  "loa.lwr", -2.8, -3.3, -2.3
)

2. 定义复用的表格转换函数

该函数可快速将单个统计数据框转换为符合要求的格式,自动完成CI列合并、行分组、标签设置:

format_stats_tbl <- function(data, group_name) {
  # 预处理数据:合并CI、设置分组和行标签
  preprocessed <- data %>%
    mutate(
      # 定义行分组
      group = case_when(
        name == "bias" ~ "偏倚",
        startsWith(name, "loa") ~ "一致性限(Limits of agreement)"
      ),
      # 定义展示用行标签
      row_label = case_when(
        name == "bias" ~ "平均偏倚",
        name == "loa.upr" ~ "上限",
        name == "loa.lwr" ~ "下限"
      ),
      # 合并95%CI列
      `95% CI` = paste0(ci.lwr, ",", ci.upr)
    ) %>%
    select(group, row_label, 估计值 = est, `95% CI`)
  
  # 转为gtsummary对象
  preprocessed %>%
    as_tbl_summary(
      label = list(估计值 ~ "估计值", `95% CI` ~ "95% CI"),
      include = c(估计值, `95% CI`),
      statistic = list(all_continuous() ~ "{value}")
    ) %>%
    # 设置分组行
    modify_group_rows(group = group, grouping_variable = group) %>%
    # 隐藏不需要的默认列
    modify_column_hide(c(stat_0)) %>%
    # 调整列头
    modify_header(
      list(估计值 ~ group_name, `95% CI` ~ group_name)
    )
}

3. 生成并合并表格

# 生成单组表格
tbl_a <- format_stats_tbl(stats_df1, "方法A")
tbl_b <- format_stats_tbl(stats_df2, "方法B")

# 并排合并两组表格
final_tbl <- tbl_merge(
  tbls = list(tbl_a, tbl_b),
  tab_spanner = c("**方法A**", "**方法B**")
)

# 查看最终结果
final_tbl

可选调整

  • 如需修改小数保留位数:可在函数中添加modify_fmt_fun(估计值 ~ function(x) sprintf("%.1f", x))自定义格式
  • 如需新增更多对比组:只需新增对应统计数据框,调用函数生成表格后加入tbl_merge()的tbls参数即可
  • 如需调整行分组规则:修改预处理步骤中group列的判断条件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:03