data.table challenge:为重复事件定义一个分层变量

时间:2012-12-04 21:55:46

标签: r data.table

我正在尝试为循环事件创建一个名为strata的变量。我们的想法是定义一个对事件进行计数但填充先前记录的变量。定义计数的是变量事件,如下所示:

id event   cov    strata      year
1   0       0        1        12
1   0       1        1        13
1   1       1        1        14
1   0       1        2        15
1   1       0        2        16
1   1       1        3        17
1   0       0        4        18
1   0       1        4        19
1   0       1        4        20

至少对于事件记录,我尝试过这样的事情:

id  <- c(rep(1,9), rep(2,5), rep(3,7))
event  <- c(0,0,1,0,1,1,0,0,0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1)
cov  <- c(0,1,1,1,0,1,0,1,1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1)
year  <- c(seq(12,20,1), seq(12,16,1), seq(12,18,1)) 
dat  <- data.table(id,event, cov, year)

dat[,strata:=seq(.N),by="id"]

但它没有用。

有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:5)

这是一个更新的解决方案。

dat  <- data.table(id,event, cov, year)
dat[, strata := c(1L,head(cumsum(event)+1L,-1L)), by = id]