如何自定义R语言table1函数输出四分位数、IQR、有效样本量等统计量
table1包自定义连续变量统计输出方案
完全可以通过自定义渲染函数实现你要的输出效果,table1包预留了render.continuous参数支持用户自定义连续变量的统计规则,完整实现代码如下:
library(survival) library(table1) # 加载处理示例数据 mydata <- survival::lung mydata$sex <- factor(mydata$sex, levels = c(1,2), labels = c("男性", "女性")) # 自定义连续变量统计渲染函数 my_render_continuous <- function(x, ...) { # 过滤缺失值后计算所有需要的统计量 x_valid <- na.omit(x) n_valid <- length(x_valid) min_x <- min(x_valid) max_x <- max(x_valid) q25_x <- quantile(x_valid, 0.25, names = F) median_x <- median(x_valid) sd_x <- sd(x_valid) q75_x <- quantile(x_valid, 0.75, names = F) iqr_x <- IQR(x_valid) # 格式化输出统计项,可自行调整小数位数、显示格式 out <- c( "有效样本量" = as.character(n_valid), "最小值、最大值" = sprintf("%.1f、%.1f", min_x, max_x), "25%分位数" = sprintf("%.1f", q25_x), "中位数(标准差)" = sprintf("%.1f(%.1f)", median_x, sd_x), "75%分位数" = sprintf("%.1f", q75_x), "四分位距(IQR)" = sprintf("%.1f", iqr_x) ) return(out) } # 生成自定义描述性统计表 t1 <- table1( formula = ~ age + ph.ecog + ph.karno | sex, data = mydata, overall = FALSE, render.continuous = my_render_continuous ) t1
补充说明:
- 你可以修改自定义函数中
sprintf部分的格式规则,调整小数保留位数、分隔符等显示效果 - 如果需要同时自定义分类变量的输出格式,只需要额外定义
render.categorical参数传入对应自定义函数即可 - 如果不需要展示有效样本量,直接删除输出向量中对应的元素即可
内容的提问来源于stack exchange,提问作者MDStat
相关产品推荐
相关产品推荐

