如何获取R中最后一次观测前n天的行号



我有一个包含1000多个主题的大数据集,其中一小部分数据集看起来像:

mydata <- read.table(header=TRUE, text="
Id   DAYS   QS   Event 
01    50    1      1
01    57    4      1
01    70    1      1
01    78    2      1
01    85    3      1
02    70    2      1
02    92    4      1
02    98    5      1
02   105    6      1
02   106    7      0
")

我想在最后一次观察前28天或更长时间获得观察的行号,例如id=01;最后一个观测值是85减去28将是57,这是第2行。对于id=02;最后一次观测是106减去28;78,因为78不存在,我们将使用70的行号,它是1(我将单独获得每个观测的行号(或id=02的第一个观测。

这应该有效:

mydata %>% group_by(Id) %>% 
mutate(row_number = last(which(DAYS <= max(DAYS) - 28)))
# A tibble: 10 x 6
# Groups:   Id [2]
Id  DAYS    QS Event   max row_number
<int> <int> <int> <int> <dbl>      <int>
1     1    50     1     1    57          2
2     1    57     4     1    57          2
3     1    70     1     1    57          2
4     1    78     2     1    57          2
5     1    85     3     1    57          2
6     2    70     2     1    78          1
7     2    92     4     1    78          1
8     2    98     5     1    78          1
9     2   105     6     1    78          1
10     2   106     7     0    78          1

最新更新