使用gtsummary的tbl_merge函数后变量标签无法修改如何解决
问题根因
- 你定义的标签列表没有绑定到数据集的变量属性上,gtsummary系列函数默认读取数据集自带的变量标签,未绑定的标签不会生效
tbl_merge()本身没有提供label参数,直接向该函数传入自定义标签列表无法被识别- 原代码中
tbl_regression()内的attr(Table.7$sex, "Sex1")属于无效参数,无实际作用
解决方案
推荐优先使用方案1,一次赋值全流程生效,无需重复配置标签:
方案1:提前为数据集绑定变量标签
只需在创建数据集后将你定义的标签列表绑定到变量属性,后续单因素、多因素回归表格都会自动读取标签,合并后自然生效:
library(gtsummary) library(labelled) Table.7<-cov %>% select(status,sex,ht,dm,chd,ca,pneu,copd,ards1) # 定义标签列表 label=list(sex="Sex", ht="Hypertension", dm="Diabetes", chd="Cardiac Dieases", ca="Cancer", pneu="Pneumonia", asthma= "Asthma", copd="COPD", ards1="ARDS") # 关键步骤:将标签绑定到数据集变量 Table.7 <- set_variable_labels(Table.7, !!!label) # 单因素回归 自动读取标签 tb_u<-tbl_uvregression( method = glm, data = Table.7, y = status, method.args = list(family = binomial(link = logit)), exponentiate = TRUE ) # 多因素回归 自动读取标签 tb_m<- glm(status ~ ht+sex+dm+chd+ca+pneu+copd+ards1,data=Table.7, family = binomial(link = logit)) %>% tbl_regression(exponentiate = TRUE) # 合并表格 标签已自动适配 tbl_merge(list(tb_u, tb_m), tab_spanner = c("**Univariate**", "**Multivariate**")) %>% bold_labels() %>% as_flex_table()
方案2:合并表格后批量修改标签
如果不想修改前面的回归代码,可以在tbl_merge()后调用modify_variable_labels()直接修改合并后表格的标签:
tbl_merge(list(tb_u, tb_m), tab_spanner = c("**Univariate**", "**Multivariate**")) %>% # 直接传入你定义的标签列表即可批量修改 modify_variable_labels(.labels = label) %>% bold_labels() %>% as_flex_table()
内容的提问来源于stack exchange,提问作者Defriman Djafri
相关产品推荐
相关产品推荐

