如何在table1包生成的汇总统计表格中添加自定义描述性统计指标
R table1包保留默认统计量并新增取值为1的次数统计解决方案
原有代码问题分析
- 硬编码统计逻辑:
sum(results19$tech==1)固定读取全局数据集的tech列计算,不会适配当前处理的变量,也不会按REGION分组统计 - 未调用默认渲染逻辑:自定义函数完全覆盖了原有默认的均值、标准差、极值等统计项的生成逻辑,导致原有统计结果丢失
正确实现代码
自定义渲染函数时先保留默认统计结果,再追加新增的统计项即可:
# 自定义连续变量渲染函数 render.continuous.custom <- function(x, ...) { # 保留table1默认的连续变量统计结果(均值、标准差、最小值、最大值等) default_res <- table1::render.continuous.default(x, ...) # 新增当前变量取值为1的次数统计,na.rm=TRUE避免缺失值导致计算错误 extra_row <- c("Eff. Obs." = sum(x == 1, na.rm = TRUE)) # 合并结果返回 return(c(default_res, extra_row)) } # 生成表格,传入自定义渲染函数 table1::table1(~ITE_tech + tech + IMR_tech | REGION, data = results19, render.continuous = render.continuous.custom)
函数内的参数x是table1自动传入的、对应每个分组下当前统计变量的取值,因此无需手动处理分组逻辑,计算结果会自动适配不同分组和不同变量。如果需要调整新增行的显示名称,直接修改extra_row里的命名即可。
内容的提问来源于stack exchange,提问作者Teo
相关产品推荐
相关产品推荐

