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