如何在gtsummary中简化二分类变量的表格展示
解决gtsummary::tbl_summary()仅显示二分类变量占比最高类别的方法
要实现仅展示二分类变量中占比最高的类别,可以借助gtsummary的modify_table_body()函数,通过筛选表格底层数据来保留目标行。以下是具体实现代码:
library(tibble) library(gtsummary) library(dplyr) set.seed(123) study_id <- 1:10 sex <- sample(c("Male", "Female"), 10, replace = TRUE) age <- sample(18:65, 10, replace = TRUE) df <- tibble(study_id, sex, age) # 生成汇总表并仅保留二分类变量的最高占比类别 df %>% tbl_summary() %>% modify_table_body( ~ .x %>% group_by(variable) %>% filter( # 仅处理类别数为2的分类变量 if (all(type == "categorical") && n_distinct(label) == 2) { # 筛选占比最高的行,占比相同时取样本量更大的 pct == max(pct) | (pct == max(pct) & n == max(n)) } else { TRUE # 非二分类变量保留所有行 } ) %>% ungroup() )
代码说明
modify_table_body():用于修改tbl_summary生成的表格底层数据框- 按变量分组后,判断当前变量是否为仅含2个类别的分类变量
- 对符合条件的变量,筛选出占比(
pct)最高的行;若占比相同,则保留样本量(n)更大的类别 - 连续变量(如示例中的
age)或多分类变量会保留原有所有统计行
内容的提问来源于stack exchange,提问作者Casey
相关产品推荐
相关产品推荐

