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

使用gtsummary时将NA纳入百分比计算但排除在p值检验外可行吗?

解决方法

要实现NA值纳入百分比统计,但卡方/Fisher检验计算p值时排除NA,可以通过「预处理生成展示用变量+指定检验时的变量过滤规则」来实现,具体步骤如下:

1. 数据预处理

先创建一个用于表格展示的变量,将NA替换为"Unknown";同时保留原始变量用于统计检验:

# 修正原始数据长度不一致问题(原代码color长度比animal少1)
animal <- c("dog", NA, "cat", "bird", "cat", "dog", NA)
color <- c("blue", "red", "blue", "red", "red", "blue", "red")
df <- data.frame(animal = as.character(animal), color = as.character(color))

# 生成展示用变量:将NA替换为"Unknown"
df$animal_display <- df$animal
df$animal_display[is.na(df$animal_display)] <- "Unknown"

2. 生成带p值的汇总表格

使用tbl_summary基于展示变量生成包含Unknown的百分比统计,再通过add_p指定检验时排除NA值:

library(gtsummary)

table1 <- 
  tbl_summary(
    df %>% select(animal_display, color),
    by = color,
    label = list(animal_display ~ "Animal")  # 把列名改回原变量名
  ) %>%
  add_p(
    # 针对展示变量,指定用原始animal变量做检验,同时排除NA值
    tests = list(animal_display ~ ~chisq_test(exclude = NA))
  )

table1

关键说明

  • animal_display用于表格展示,NA被替换为"Unknown"后会被纳入百分比计算;
  • add_p中的chisq_test(exclude = NA)会使用原始animal变量,自动排除NA值计算卡方检验的p值;
  • 如果需要用Fisher精确检验,只需把chisq_test换成fisher_test即可,同样支持exclude = NA参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:22:17