对于R中的不同ID,从不同的开始周连续选择一周

时间:2016-10-28 12:48:08

标签: r

数据集如:

ID week
1   2
1   3
1   4
1   5
1   6
1   7
2  10
2  11
2  12
2  13
2  14
3  13
3  14
3  15
3  16
3  17
3  18
3  19
3  20
3  21
3  22

每个ID都有不同的开始周。我想为R中的每个ID连续选择连续3周,输出就像

ID   week
1      4
1      5
1      6
2     14
2     15
2     16
3     20
3     21
3     22

有没有更快的实现呢?谢谢

1 个答案:

答案 0 :(得分:0)

以下是data.table

的一种方法
library(data.table)
setDT(df1)[df1[, if(.N < 4) .I[1:.N] else {
             i1 <- .I[sample(.N-2, 1)]
             i1:(i1+2) } , by = ID]$V1]