tbl_summary处理二分类变量报错:无1值时无法生成0%占比结果
解决gtsummary处理无阳性值二分类变量的问题
问题场景
使用gtsummary 2.0.0(基于R 4.1.1)时,过滤后二分类变量(取值为1/0)仅剩0值:
- 指定
type = everything() ~ "dichotomous"时,报错Summary type is "dichotomous" but no summary value has been assigned. - 不指定
type时,变量会被当作分类变量展示,无法输出二分类形式的0%结果
无需重编码的解决方案
通过tbl_summary()的value参数手动指定二分类变量的阳性值(即原数据中的1),即可强制按二分类格式输出0%的统计结果,无需将变量重编码为Y/N。
修改后的示例代码
data <- data.frame(group = c("a", "b", "a", "a", "b"), resp_1 = c(1, 1, 0, 1, 1), resp_2 = c(0, 1, 0, 0, 1)) data %>% filter(group == "a") %>% select(starts_with("resp")) %>% tbl_summary( type = everything() ~ "dichotomous", value = everything() ~ 1 # 明确指定阳性值为1 )
原理说明
- 报错根源:当仅指定
dichotomous类型但未定义阳性值时,gtsummary会自动识别数据中存在的非默认值作为统计目标,但如果数据中无1值,程序无法找到对应统计值,从而抛出错误。 - 指定
value参数后,程序会强制以设定的阳性值(1)为统计对象,即使数据中不存在该值,也会生成1: 0 (0%)的二分类统计结果,符合需求。
内容的提问来源于stack exchange,提问作者JVT
相关产品推荐
相关产品推荐

