使用
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()
的参数正在得到某种版本的非标准评估?
有办法做到这一点吗?
也许您可以设置控制逻辑来确定使用的措施?
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))
}