我正在研究一个“宽”数据集,现在我想使用一个特定的包(-msSurv-
用于非参数多状态模型),它需要区间形式的数据。
我当前的数据集的特点是每个人都有一行:
dat <- read.table(text = "
id cohort t0 s1 t1 s2 t2 s3 t3
1 2 0 1 50 2 70 4 100
2 1 0 2 15 3 100 0 0
", header=TRUE)
其中cohort
是时间固定的协变量,并且s1
-s3
对应于随时间变化的协变量s = 1,2,3,4
所占用的值(它们是个体随时间访问的不同状态)。日历时间由t1
-定义,每个人的t3
范围从0
到。100
因此,例如,个人 1 保持状态 = 1 直到日历时间 = 50,然后他保持状态 = 2 直到时间 = 70,最后他保持状态 = 4 直到时间 100。
我想获得的是“间隔”形式的数据集,即:
id cohort t.start t.stop start.s end.s
1 2 0 50 1 2
1 2 50 70 2 4
1 2 70 100 4 4
2 1 0 15 2 3
2 1 15 100 3 3
我希望这个例子足够清楚,否则请告诉我,我会尽力进一步澄清。
您将如何使这种重塑自动化?考虑到我有相对大量的(模拟)个体,大约 100 万。
非常感谢您的帮助。