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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:12:37