如何解决gtsummary包tbl_summary函数的by参数报错问题
问题
更新R Studio(版本2024.09.1+394)及相关包后,原本运行正常的gtsummary代码出现报错:
Error in `tbl_summary()`: ! Error processing `type` argument. ! Can't select columns that don't exist. ✖ Column `var4` doesn't exist. ℹ Select among columns "var1", "var2", and "var3"
示例代码如下:
library(dplyr) library(gtsummary) # 创建示例数据 df_demo <- data.frame( var1 = rnorm(10), # 连续变量1 var2 = rnorm(10), # 连续变量2 var3 = sample(c("Group 1", "Group 2"), 10, replace = TRUE), # 分类变量1 var4 = sample(c("Yes", "No"), 10, replace = TRUE) # 分类变量2 ) # 尝试用4个变量生成汇总表 PPF_table <- df_demo %>% subset(select = c(var1, var2, var3, var4)) %>% tbl_summary( missing = "no", by = var4, # 按var4分组 type = list( c(var1, var2) ~ "continuous", # 指定var1、var2为连续型 c(var3, var4) ~ "categorical" # 指定var3、var4为分类型 ), statistic = list(all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} ({p}%)"), label = list( var1 ~ "Variable 1", var2 ~ "Variable 2", var3 ~ "Group", var4 ~ "Response" ) ) %>% add_p( test = list(all_continuous() ~ "t.test", all_categorical() ~ "chisq.test"), pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% add_n() # 输出汇总表 PPF_table
用户已重装R(4.4.2)、RStudio,更新gtsummary和dplyr包,但问题仍未解决,怀疑报错与by=参数相关。
原因分析
gtsummary新版本中,当使用by参数指定分组变量时,该变量会默认被排除在待汇总分析的变量集合之外。此时在type或label参数中引用该分组变量(如示例中的var4),就会触发"列不存在"的报错,因为程序在待汇总变量里找不到它。
解决方案
移除type和label列表中关于var4的设置即可,因为分组变量仅用于分组,无需指定类型和标签。修改后的代码如下:
library(dplyr) library(gtsummary) # 创建示例数据 df_demo <- data.frame( var1 = rnorm(10), # 连续变量1 var2 = rnorm(10), # 连续变量2 var3 = sample(c("Group 1", "Group 2"), 10, replace = TRUE), # 分类变量1 var4 = sample(c("Yes", "No"), 10, replace = TRUE) # 分类变量2 ) # 生成汇总表 PPF_table <- df_demo %>% subset(select = c(var1, var2, var3, var4)) %>% tbl_summary( missing = "no", by = var4, # 按var4分组 type = list( c(var1, var2) ~ "continuous", # 指定var1、var2为连续型 var3 ~ "categorical" # 指定var3为分类型 ), statistic = list(all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} ({p}%)"), label = list( var1 ~ "Variable 1", var2 ~ "Variable 2", var3 ~ "Group" ) ) %>% add_p( test = list(all_continuous() ~ "t.test", all_categorical() ~ "chisq.test"), pvalue_fun = ~style_pvalue(.x, digits = 2) ) %>% add_n() # 输出汇总表 PPF_table
若需对分组变量var4本身进行展示,可使用add_overall()或调整include参数明确包含var4,但通常场景下无需此操作,因为by参数已将其作为分组依据显示在表格中。
内容的提问来源于stack exchange,提问作者Amanda Gahlot
相关产品推荐
相关产品推荐

