`survival::tmerge()`中`tdc()`参数中的变量名称

问题描述 投票:0回答:1

使用

tmerge()
编码时变协变量以求生存:如果我直到运行时才知道要编码什么协变量怎么办?

假装数据:两个人,两个时变协变量:

bmi
modifiedBmi

personWise <- data.frame(personId=1:2, startDay=0, endDay=1:2 * 300, 
  event=c(TRUE, FALSE))
print.data.frame(personWise)
  personId startDay endDay event
1        1        0    300  TRUE
2        2        0    600 FALSE
visitWise <- data.frame(
  personId=c(1, 1, 1, 2, 2),
  visitDay=c(50, 150, 200, 20, 500),
  bmi=c(3, 4, 3, 6, 5),
  modifiedBmi=c(1, 7, 8, 2, 6)
)
print.data.frame(visitWise)
  personId visitDay bmi modifiedBmi
1        1       50   3           1
2        1      150   4           7
3        1      200   3           8
4        2       20   6           2
5        2      500   5           6

如果我想将

bmi
编码为时变协变量,我可以像这样使用
tmerge()

tv <- tmerge(data1=personWise, data2=personWise, id=personId, tstart=startDay, 
  tstop=endDay, event=event(endDay, event))
tv <- tmerge(data1=tv, data2=visitWise, id=personId, 
    bmiMeasure=tdc(visitDay, bmi))

或者,如果我对

modifiedBmi
感兴趣,我可以将第二个
tv()
调用更改为 include 。 。 。
bmiMeasure=tdc(visitDay, modifiedBmi))

但是,如果我想运行多个模型(可能在不同的数据集上),以编程方式更改我关心的 BMI 测量值,该怎么办?

理想情况下,我想要类似

bmiCovariate <- "bmi"
和 的东西。 。 。
bmiMeasure=tdc(visitDay, bmiCovariate))
,但这当然行不通,因为
tdc()
的参数正在得到某种版本的非标准评估?

有办法做到这一点吗?

r survival non-standard-evaluation
1个回答
0
投票

也许您可以设置控制逻辑来确定使用的措施?

bmiCovariate <- "bmi"

if(bmiCovariate == "bmi"){
  
  tv <- tmerge(data1=tv, data2=visitWise, id=personId, 
               bmiMeasure=tdc(visitDay, bmi))
  
} else {   
  
  tv <- tmerge(data1=tv, data2=visitWise, id=personId, 
               bmiMeasure=tdc(visitDay, modifiedBmi))
  
}

© www.soinside.com 2019 - 2024. All rights reserved.