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

如何在table1包中同时输出MIN、MAX与默认的中位数和标准差?

在table1包中同时输出中位数、标准差、最小值和最大值

要让table1包的输出包含中位数(Median)、标准差(SD)、最小值(Min)和最大值(Max),你需要自定义连续变量的汇总函数,替换默认的统计量输出逻辑。以下是修改后的完整代码:

library(boot) 
library(table1)

melanoma2 <- melanoma
 
# 转换分类变量
melanoma2$status <- 
  factor(melanoma2$status, 
         levels=c(2,1,3),
         labels=c("Alive", # 参考组
                  "Melanoma death", 
                  "Non-melanoma death"))

# 自定义连续变量的汇总函数
my_summary <- function(x) {
  if (is.numeric(x)) {
    # 计算所需统计量(忽略缺失值)
    med <- median(x, na.rm = TRUE)
    sd_val <- sd(x, na.rm = TRUE)
    min_val <- min(x, na.rm = TRUE)
    max_val <- max(x, na.rm = TRUE)
    
    # 格式化输出字符串,可根据需求调整小数位数
    c(
      `中位数 (标准差)` = sprintf("%.1f (%.1f)", med, sd_val),
      `最小值 - 最大值` = sprintf("%.1f - %.1f", min_val, max_val)
    )
  } else if (is.factor(x)) {
    # 分类变量保留默认的频数和百分比格式
    table_x <- table(x, useNA = "no")
    c(
      `n (%)` = sprintf("%d (%.0f%%)", sum(table_x), 100 * prop.table(table_x))
    )
  }
}

# 调用table1并使用自定义汇总函数
table1(~ factor(sex) + age + factor(ulcer) + thickness | status, 
       data = melanoma2,
       render.continuous = my_summary)

代码说明:

  • my_summary函数会根据变量类型自动处理:
    • 数值型变量:计算中位数、标准差、最小值、最大值,按指定格式返回两行统计结果
    • 分类变量:保持默认的n (%)输出格式,不改动原有逻辑
  • 在table1调用中通过render.continuous = my_summary指定连续变量的渲染规则,这样输出表格里的数值型变量(如age、thickness)就会同时显示中位数+标准差、最小值-最大值两组统计量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:28:21