You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 02:22:43