У меня есть простая проблема, с которой мне удалось найти только непривлекательные решения.
У меня есть данные временных рядов с днями в качестве единицы анализа. В определенные дни происходит событие. Я хочу создать переменную, которая указывает все даты, следующие за одной неделей события, и другую переменную, указывающую, сколько дней прошло с момента события в течение этой недели. Ниже приведен пример того, чего я хочу достичь.
date event week_following_event days_since_event
1 2000-01-01 0 0 NA
2 2000-01-02 0 0 NA
3 2000-01-03 1 0 NA
4 2000-01-04 0 1 1
5 2000-01-05 0 1 2
6 2000-01-06 0 1 3
7 2000-01-07 0 1 4
8 2000-01-08 0 1 5
9 2000-01-09 0 1 6
10 2000-01-10 0 1 7
11 2000-01-11 0 0 NA
12 2000-01-12 0 0 NA
13 2000-01-13 0 0 NA
14 2000-01-14 0 0 NA
15 2000-01-15 0 0 NA
Я почти уверен, что смогу сделать это, написав цикл, но в идеале я ищу более точное решение.
Вот вывод dput () для целей воспроизведения:
structure(list(date = structure(c(10957, 10958, 10959, 10960,
10961, 10962, 10963, 10964, 10965, 10966, 10967, 10968, 10969,
10970, 10971), class = "Date"), event = c(0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0), week_following_event = c(0, 0, 0, 1,
1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0), days_since_event = c(NA, NA,
NA, 1L, 2L, 3L, 4L, 5L, 6L, 7L, NA, NA, NA, NA, NA)), row.names = c(NA,
-15L), class = "data.frame")
Любой вклад очень ценится!