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
相关产品推荐
相关产品推荐

