我正在尝试为循环事件创建一个名为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"]
但它没有用。
有什么想法吗? 感谢
答案 0 :(得分:5)
这是一个更新的解决方案。
dat <- data.table(id,event, cov, year)
dat[, strata := c(1L,head(cumsum(event)+1L,-1L)), by = id]