如何在R的table1函数中移除数值变量的Mean[SD]行?
用table1函数实现自定义统计量展示
当然可以通过自定义统计量函数来实现你的需求——去掉数值变量的"Mean[SD]"行,只保留"Median[Range]",同时让分类变量展示频数和百分比。具体实现代码如下:
library(table1) library(tibble) # 构造示例数据 number <- c(1:10) pet <- c("cat","cat","dog","dog","dog","cat","dog","dog","cat","dog") df <- tibble(number, pet) # 自定义统计量函数 my_stats <- function(x, ...) { if (is.numeric(x)) { # 计算中位数和极差 med_val <- median(x, na.rm = TRUE) range_val <- range(x, na.rm = TRUE) sprintf("%g [%g, %g]", med_val, range_val[1], range_val[2]) } else if (is.character(x) || is.factor(x)) { # 计算分类变量的频数与百分比 count_tab <- table(x) pct_tab <- prop.table(count_tab) * 100 paste0(count_tab, " (", sprintf("%.1f", pct_tab), "%)") } } # 调用table1并指定自定义统计量 table1(~ number | pet, data = df, render.continuous = my_stats)
关键说明:
render.continuous参数专门用来定义数值变量的统计结果渲染逻辑,传入自定义的my_stats函数后,会覆盖默认的均值+标准差输出,改为只输出中位数和范围。- 分类变量的频数+百分比是table1的默认展示逻辑,无需额外调整;如果要修改百分比精度或格式,直接在
my_stats的分类变量分支里调整即可。
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

