如何在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
相关产品推荐
相关产品推荐

