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

gtsummary中add_stat_label无法将连续变量统计标签移至Statistic列求助

解决gtsummary连续变量统计标签无法移至Statistic列的问题

问题原因

当使用type = ~ 'continuous2'时,连续变量的每个统计量(均值、中位数等)会生成独立的层级行,这类行的统计标签默认归属Characteristic列的层级结构,add_stat_label(location = 'column')仅对分类变量的统计标签生效,无法自动调整连续变量的标签位置。

解决方案:手动调整表格内容

通过modify_table_body函数直接修改表格底层数据,将连续变量的统计标签移至Statistic列,同时保留Characteristic列的变量名结构:

library(gtsummary)
library(dplyr)

iris_table <- iris |>
  select(Species, Sepal.Length) |>
  tbl_summary(
    type = Sepal.Length ~ 'continuous2',
    statistic = list(
      all_continuous() ~ 
        c('{mean} ({sd})', '{median} ({p25}-{p75})', '{min}, {max}'),
      all_categorical() ~ '{n} ({p})')
  ) |>
  # 先添加统计标签到临时列
  add_stat_label(
    label = list(
      all_continuous() ~ c('Mean (SD)', 'Median (Q1-Q3)', 'Min, max'),
      all_categorical() ~ 'N (%)'
    )
  ) |>
  # 调整列内容,将统计标签合并到Statistic列
  modify_table_body(
    mutate,
    # 清空连续变量统计行的Characteristic列内容
    characteristic = ifelse(variable == "Sepal.Length" & row_type == "level", "", characteristic),
    # 将统计标签与统计值合并到Statistic列
    stat = ifelse(variable == "Sepal.Length" & row_type == "level", 
                  paste0(stat_label, ": ", stat), 
                  stat)
  ) |>
  # 移除临时的stat_label列
  modify_table_body(select, -stat_label)

iris_table

效果说明

  • 连续变量Sepal.Length的每个统计量标签(Mean (SD)、Median (Q1-Q3)等)会显示在Statistic列的对应行前
  • 分类变量的N (%)标签正常保留在Statistic列头部
  • Characteristic列仅保留变量名,层级结构清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:42:14