如何在 R 中最后一次观察前 n 天获取行号?

How to get the row numbers n days prior to last observation in R?

我有一个包含 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