如何在R的gtsummary中为置信区间设置两位小数?
解决gtsummary置信区间保留两位小数的问题
你可以通过以下两种方法实现置信区间保留两位小数:
方法一:在add_ci中指定digits参数
直接在add_ci函数里添加digits参数,明确指定分类变量的置信区间保留两位小数:
library(gtsummary) survey::svydesign(id = ~PSU, weights = ~WT_analysis, strata = ~Stratum, data = nyts23_drop_na)|> tbl_svysummary(digits = list(all_categorical() ~ c(0, 2)), by = ADDI_cat1, percent = "column", include = c(SCHOOLTYPE,race_cat,SEX,sex_ori)) |> add_stat_label() |> add_ci(pattern = "{stat} (95% CI {ci})", digits = all_categorical() ~ 2) |> add_p()
方法二:用modify_fmt_fun格式化置信区间
如果方法一不生效,可以通过字符串替换的方式,针对性调整置信区间的小数位数:
library(gtsummary) library(stringr) survey::svydesign(id = ~PSU, weights = ~WT_analysis, strata = ~Stratum, data = nyts23_drop_na)|> tbl_svysummary(digits = list(all_categorical() ~ c(0, 2)), by = ADDI_cat1, percent = "column", include = c(SCHOOLTYPE,race_cat,SEX,sex_ori)) |> add_stat_label() |> add_ci(pattern = "{stat} (95% CI {ci})") |> modify_fmt_fun( columns = all_stat_cols(), fmt_fun = function(x) { str_replace_all(x, "\\((95% CI )([0-9.]+) to ([0-9.]+)\\)", function(m) sprintf("(95%% CI %.2f to %.2f)", as.numeric(m[2]), as.numeric(m[3]))) } ) |> add_p()
原理说明:原代码的digits参数仅控制tbl_svysummary生成的基础统计值小数位,置信区间的格式需要单独在add_ci中配置,或者通过modify_fmt_fun对生成的文本进行格式化调整。
内容的提问来源于stack exchange,提问作者user27842288
相关产品推荐
相关产品推荐

