使用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
相关产品推荐
相关产品推荐

