如何让GTSummary的Overall列百分比计算包含Missing值?
解决GTSummary中Overall列百分比包含缺失值的问题
默认情况下,tbl_summary()的percent = "column"是基于非缺失观测计算百分比,所以你生成的表格里,Overall列的Red、Blue百分比是用非缺失的60个样本当分母,而Missing的30个没被算进分母。要让分母包含总样本(含缺失值),可以通过自定义统计量实现:
修改后的代码
# 定义数据 df <- data.frame(pat = c(1:90)) df$by <- ifelse(df$pat < 30, "A", "B") df$lvl <- ifelse(df$pat < 30, NA, ifelse(df$pat < 60, "Red", "Blue")) # 生成包含缺失值分母的百分比表格 df |> select(by, lvl) |> tbl_summary( by = by, percent = "column", type = list(all_continuous() ~ "continuous2"), missing = "ifany", missing_text = "Missing", # 自定义分类变量统计量:用总样本数计算百分比 statistic = list(all_categorical() ~ "{n} ({style_percent(n / N, digits = 1)}%)"), # 自定义缺失值统计量:同样基于总样本 missing_stat = "{N_miss} ({style_percent(N_miss / N, digits = 1)}%)" ) |> add_overall(last = TRUE)
说明
- 核心是通过
statistic参数重写分类变量的统计逻辑:n是当前类别的样本数,N是分组的总样本量(包含缺失值),这样计算出的百分比就是以总样本为分母。 - 修改后,Overall列里Red、Blue、Missing的百分比会分别是33.3%、33.3%、33.3%,总和为100%,符合你的需求。
内容的提问来源于stack exchange,提问作者rambles
相关产品推荐
相关产品推荐

