r-使用data.table按关键字变量查找基于条件的索引



我有一个data.table,如下所示:

library(data.table)
dt1 <- data.table(
id = 1,
week = c( seq(1:260))
)
dt1[0:100, status := "A"][101:260, status := "B"]
dt2 <- data.table(
id = 2,
week = c( seq(1:260))
)
dt2[0:155, status := "A"][156:260, status := "B"]
dt3 <- data.table(
id = 3,
week = c( seq(1:260))
)
dt3[0:190, status := "A"][191:193, status := "B"][194:200, status := "A"][201:260, status := "B"]
data <- rbind(dt1,dt2,dt3)

我希望找到每个唯一id的第一个索引,其中status等于";B";连续4周。结果应该是

data_want <- data.table(
id = c(1,2,3),
week = c(104, 59, 204)
)

有什么建议吗?

使用rleid:

data[order(id,week),.(status,week,n=seq_len(.N)),by=.(id,rleid(status))][
status=="B"&n==4,.(id,week)]
id  week
<num> <int>
1:     1   104
2:     2   159
3:     3   204

最新更新