R语言tbl_summary()未显示Yes/No变量水平问题求助
问题原因
tbl_summary()分组汇总时g变量不显示Yes/No水平,是两个默认逻辑导致的:
- 函数会自动把仅含2个取值的字符型变量识别为二分类(dichotomous)变量,这类变量默认只展示1个取值,不会展开全部水平
- g没有提前转成因子指定固定水平,加上分组后组内取值完全无变异(output=0组全是Yes、output=1组全是No),函数就直接跳过了水平行的展示
解决方法
按以下两步调整代码就能正常显示:
- 先把g转成因子类型,手动写全要展示的水平顺序,避免函数自动识别时丢水平
- 在tbl_summary里用
type参数明确指定g为普通分类变量,不要按默认的二分类逻辑处理
修正后的可运行代码:
library(dplyr) library(gtsummary) data.frame( a = c(0,1,2), b = c(0,1,2), f = c("m", "f", "m"), g = factor(c("Yes", "No", "Yes"), levels = c("Yes", "No")), output = c(0,1,0) ) %>% tbl_summary( by = output, type = list(g ~ "categorical"), statistic = list(all_categorical() ~ "{n} ({p}%)") )
运行后g变量下会正常展开Yes、No两个水平行,分别统计两个output分组的计数和占比:output=0组Yes为2(100%)、No为0(0%);output=1组Yes为0(0%)、No为1(100%)。
如果不需要显示计数为0的水平,删掉因子转换的步骤,只保留type参数设置即可,此时只会展示各组实际存在的取值。
内容的提问来源于stack exchange,提问作者Mathica
相关产品推荐
相关产品推荐

