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

如何在gtsummary中实现条件逻辑?附当前与期望输出示例

如何在gtsummary中实现条件逻辑调整表格展示

问题背景

现有R代码生成的gtsummary统计表格包含空值类别,不符合期望效果,需通过条件逻辑调整,仅展示有实际数据的类别:

# 创建数据框
data <- data.frame(
  alive = c(1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1),
  reason = c("", "", "", "", "", "", "pneumonia", "stillbirth", "", "", "", ""),
  baby_ill = c(2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1),
  episode = c("", "", "", 3, "", 4, 4, "", "", "", "", "")
)

# 将字符列转为因子
data[] <- lapply(data, as.factor)

# 生成gtsummary表格
tbl_summary(data) %>% add_n()

解决方案

步骤1:预处理数据

将空字符串替换为NA,转换为因子时自动移除空水平,避免空类别进入表格。

步骤2:生成定制化表格

结合gtsummary的函数实现条件过滤,确保仅展示有效类别。

修正后完整代码

# 创建数据框
data <- data.frame(
  alive = c(1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1),
  reason = c("", "", "", "", "", "", "pneumonia", "stillbirth", "", "", "", ""),
  baby_ill = c(2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1),
  episode = c("", "", "", 3, "", 4, 4, "", "", "", "", "")
)

# 替换空字符串为NA并转为因子
data <- lapply(data, function(col) {
  col[col == ""] <- NA
  as.factor(col)
}) %>% as.data.frame()

# 生成表格并添加样本量
tbl_summary(data) %>% 
  add_n() %>%
  # 可选:针对特定变量进一步过滤空行(若自动去重未生效时使用)
  modify_table_body(
    filter,
    !(variable %in% c("reason", "episode") & is.na(label))
  )

关键说明

  • 替换空字符串为NA后,因子会自动排除无数据的水平,gtsummary默认不展示NA类别;
  • modify_table_body可实现精细化行过滤,适用于需要针对特定变量定制展示规则的场景;
  • 若需按alive等变量分组展示条件统计,可结合tbl_strata函数实现分层条件逻辑。

内容的提问来源于stack exchange,提问作者Ashu Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:47:11