如何用gtsummary包生成含连续与分类变量缺失值统计的表格
用gtsummary实现连续与分类变量的缺失值统计表格
解决方案思路
借助gtsummary的add_stat()自定义统计函数,为所有变量(含分类变量)添加缺失值数量及占比的统计行,全程无需依赖其他包。
示例代码
library(gtsummary) library(dplyr) library(glue) # 构造带缺失值的示例数据集 set.seed(123) df <- mtcars %>% mutate( # 为连续变量添加缺失值 mpg = ifelse(runif(nrow(.)) < 0.1, NA, mpg), # 为分类变量添加缺失值并转为因子类型 cyl = factor(cyl), cyl = ifelse(runif(nrow(.)) < 0.15, NA, cyl), am = factor(am, labels = c("自动", "手动")), am = ifelse(runif(nrow(.)) < 0.1, NA, am) ) # 自定义缺失值统计函数:返回缺失值数量(百分比)格式 missing_stats <- function(data, variable, ...) { n_missing <- sum(is.na(data[[variable]])) pct_missing <- scales::percent(n_missing / nrow(data), accuracy = 0.1) tibble(label = "缺失值", stat = glue("{n_missing} ({pct_missing})")) } # 生成「常规统计+缺失值」完整表格 tbl_full <- df %>% tbl_summary( type = list(all_continuous() ~ "continuous", all_categorical() ~ "categorical"), # 定义变量常规统计量(可按需调整) statistic = list( all_continuous() ~ "{median} ({p25}, {p75})", all_categorical() ~ "{n} ({p}%)" ), missing = "no" # 关闭默认缺失值显示,后续手动添加统一格式的统计行 ) %>% # 为所有变量添加缺失值统计行,放在常规统计下方 add_stat(fns = everything() ~ missing_stats, location = "bottom") %>% # 调整表格表头和标题 modify_header(label = "**变量**", stat_0 = "**统计结果**") %>% modify_caption("连续与分类变量统计及缺失值情况") # 生成仅展示缺失值的简化表格(可选) tbl_only_missing <- df %>% tbl_summary( type = list(all_continuous() ~ "continuous", all_categorical() ~ "categorical"), statistic = everything() ~ missing_stats, missing = "no" ) %>% modify_header(label = "**变量**", stat_0 = "**缺失值(百分比)**") %>% modify_caption("变量缺失值统计")
关键说明
missing_stats函数按gtsummary要求的格式返回缺失值统计结果,兼容所有变量类型add_stat()实现将缺失值统计行批量添加到每个变量的统计模块中- 可根据需求选择保留变量常规描述统计,或仅展示缺失值数据
内容的提问来源于stack exchange,提问作者SimRock
相关产品推荐
相关产品推荐

