如何在tableone包的CreateTableOne()中使用rms::rcs()协变量转换?
问题:如何在CreateTableOne中应用限制性立方样条(rcs)转换?
我在进行IPTW分析时,使用rms::rcs()实现限制性立方样条,希望在tableone包的CreateTableOne()函数中对变量应用rcs转换,尝试执行以下代码:
Unadjusted <- CreateTableOne( data = DB1, vars = c(COVARIATES, 'rcs(ONSET,4)'), strata = 'ASM_USED')
但收到警告提示:
Warning message: In ModuleReturnVarsExist(vars, data) : The data frame does not have: rcs(ONSET,4) Dropped
因找不到对应列被丢弃,请问是否有方法在CreateTableOne()中实现该rcs()转换?
解决方案
CreateTableOne()的vars参数仅接受数据框中已存在的列名,无法直接在参数中执行函数转换,因此需要先生成rcs转换后的变量,再传入函数:
方法一:直接在原数据框中添加转换后的变量
library(rms) library(tableone) # 生成4个节点的限制性立方样条变量,添加到原数据框 DB1$ONSET_rcs <- rcs(DB1$ONSET, 4) # 调用CreateTableOne,使用新生成的列名 Unadjusted <- CreateTableOne(data = DB1, vars = c(COVARIATES, "ONSET_rcs"), strata = "ASM_USED")
方法二:创建临时数据框(不修改原数据)
如果不想改动原始数据,可以构建包含转换后变量的临时数据框:
# 合并原数据与rcs转换后的变量,生成临时数据框 temp_data <- cbind(DB1, ONSET_rcs = rcs(DB1$ONSET, 4)) # 基于临时数据框生成表格 Unadjusted <- CreateTableOne(data = temp_data, vars = c(COVARIATES, "ONSET_rcs"), strata = "ASM_USED")
内容的提问来源于stack exchange,提问作者cccnrc
相关产品推荐
相关产品推荐

