如何在gtsummary包的add_ci函数中保留4位小数报告置信区间?
解决方法
要在gtsummary生成的表格中将置信区间(CI)保留4位小数,有两种简洁的实现方式:
方法1:在add_ci()中直接指定格式化函数
通过add_ci()的fmt_fun参数,定义CI的小数位数格式。这里用sprintf("%.4f", .x)强制保留4位小数:
library(survey) library(gtsummary) data(api, package = "survey") svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) |> tbl_svysummary( by = "both", include = c(api00, stype), statistic = all_continuous() ~ "{mean} ({sd})" ) |> add_stat_label() |> add_ci( pattern = "{stat} (95% CI {ci})", fmt_fun = ~sprintf("%.4f", .x) # 设置CI保留4位小数 ) |> modify_header(all_stat_cols() ~ "**{level}**") |> modify_spanning_header(all_stat_cols() ~ "**Survived**")
方法2:用modify_fmt_fun()单独调整CI列
如果需要单独针对CI列设置格式(不影响均值、标准差等其他统计量),可以用modify_fmt_fun()结合正则表达式精准匹配CI数值:
library(survey) library(gtsummary) library(stringr) data(api, package = "survey") svydesign(id = ~dnum, weights = ~pw, data = apiclus1, fpc = ~fpc) |> tbl_svysummary( by = "both", include = c(api00, stype), statistic = all_continuous() ~ "{mean} ({sd})" ) |> add_stat_label() |> add_ci(pattern = "{stat} (95% CI {ci})") |> modify_fmt_fun( columns = all_stat_cols(), fmt_fun = function(x) { # 仅格式化CI区间内的数值为4位小数 str_replace_all(x, "(?<=CI )[0-9.]+(?=,)|(?<=, )[0-9.]+", function(m) sprintf("%.4f", as.numeric(m))) } ) |> modify_header(all_stat_cols() ~ "**{level}**") |> modify_spanning_header(all_stat_cols() ~ "**Survived**")
说明
- 方法1操作简单,对所有CI数值统一设置格式,适合全局调整的场景。
- 方法2更灵活,仅修改CI部分的小数位数,不改变其他统计量的显示格式。
内容的提问来源于stack exchange,提问作者Stephen Okiya
相关产品推荐
相关产品推荐

