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

如何自定义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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:45:05