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

如何在gtsummary的tbl_summary中按常数修改单元格n值?

解决方案

方法1:自定义统计函数(推荐)

直接在tbl_summary()的statistic参数中传入自定义函数,对频数n进行缩放,同时保留原百分比计算结果。

示例代码(以将n除以10为例):

library(gtsummary)
library(glue)
library(purrr)

# 自定义统计函数,scale为缩放系数(除以10设为0.1,乘以2设为2)
scale_n_stat <- function(x, scale = 0.1) {
  # 计算每个类别的频数和原始百分比
  cat_table <- table(x, useNA = "no")
  pct <- prop.table(cat_table) * 100
  
  # 格式化输出:缩放后的n + 原百分比
  purrr::imap_chr(cat_table, ~ glue("{.x * scale} ({sprintf('%.1f', .y)}%)"))
}

# 生成表格时指定使用自定义函数
trial %>%
  select(trt, response) %>%
  tbl_summary(
    type = all_categorical() ~ "categorical",
    statistic = all_categorical() ~ scale_n_stat(scale = 0.1)
  )

该方法在统计计算阶段直接处理n值,逻辑清晰且可复用,无需后续修改表格内容。

方法2:修改表格底层数据

如果已经生成tbl_summary对象,可通过modify_table_body()直接调整统计结果列:

library(gtsummary)
library(stringr)

# 先生成原始表格
tbl <- trial %>%
  select(trt, response) %>%
  tbl_summary()

# 修改stat列中的n值(示例为除以10)
tbl_modified <- tbl %>%
  modify_table_body(
    ~ .x %>%
      mutate(
        stat = str_replace(
          stat,
          "^(\\d+)", # 匹配开头的整数n值
          function(m) as.numeric(m) * 0.1 # 应用缩放系数
        )
      )
  )

tbl_modified

这种方法适合快速调整已生成的表格,若n值包含小数,需调整正则表达式的匹配规则。

注:两种方法都可根据需求调整缩放系数,百分比始终保留基于原始数据的计算结果。

内容的提问来源于stack exchange,提问作者EML

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:04:58