gtsummary中inline_text无法输出含置信区间的百分比问题求助
问题解决方法
核心原因
gtsummary v2.0+ 弃用了单独的ci列,改用conf.low和conf.high存储置信区间上下限,但需要在inline_text中正确引用这些占位符,同时确保置信区间已被正确计算并关联到对应统计量。
修正后的代码步骤
- 调整表格构建逻辑:移除
add_ci()中的自定义pattern(避免干扰inline_text的变量提取),让add_ci()默认计算并存储置信区间上下限:
tbl1 <- pof_dor_design20 |> tbl_svysummary( by = obtem_dor, include = c(sexo, cor_raca), label = list(sexo = "Sexo"), statistic = list( all_continuous() ~ "{mean}", all_categorical() ~ "{p}%" ), digits = list( all_continuous() ~ 2, all_categorical() ~ 1 ) ) |> add_stat_label() |> add_ci() # 不指定pattern,默认存储conf.low和conf.high modify_header(all_stat_cols() ~ "<strong>{level}</strong>") |> add_p( test = list( all_continuous() ~ "svy.t.test", all_categorical() ~ "svy.wald.test" ) )
- 生成目标格式文本:在
inline_text的pattern参数中组合百分比与置信区间占位符,通过digits统一设置小数位数:
# 输出格式示例:"37.8% (37.0, 39.0)" c_final <- inline_text(tbl1, variable = sexo, level = "1", column = "1", pattern = "{p}% ({conf.low}, {conf.high})", digits = list(p = 1, conf.low = 1, conf.high = 1))
关键说明
- 必须执行
add_ci():只有完成置信区间计算,conf.low和conf.high才会被纳入表格统计量元数据,inline_text才能正常引用。 - 统一小数位数:通过
digits参数同步设置百分比与置信区间的小数位数,保证输出格式一致性。
内容的提问来源于stack exchange,提问作者Sotero Mengue
相关产品推荐
相关产品推荐

