У меня есть набор данных, в котором я хочу определить, было ли отправлено приглашение (Событие = 0) перед событием (Событие = 1) по идентификатору. Приглашение считается отправленным, если оно пришло в тот же день, или приглашение (дата) не позднее, чем за 14 недель до мероприятия. Когда происходит событие, этот процесс сбрасывается.
Вот пример моего фрейма данных:
ID Date Event
1 1 2017-01-01 0
2 1 2017-01-02 0
3 1 2017-01-03 0
4 1 2017-01-04 1
5 4 2017-01-03 1
6 4 2017-01-03 0
7 4 2017-01-06 1
8 4 2017-01-04 0
9 4 2017-01-05 0
10 5 2017-02-01 0
11 5 2018-01-02 1
12 7 2018-01-03 1
Вот результат, который мне бы хотелось:
ID Date Event Sent
1 1 2017-01-01 0 0
2 1 2017-01-02 0 0
3 1 2017-01-03 0 0
4 1 2017-01-04 1 1
5 4 2017-01-03 1 1
6 4 2017-01-03 0 0
7 4 2017-01-06 1 1
8 4 2017-01-04 0 0
9 4 2017-01-05 0 0
10 5 2017-02-01 0 0
11 5 2018-01-02 1 0
12 7 2018-01-03 1 0
Исходный фрейм данных:
df <- data.frame(ID = c(rep("1", 4), rep("4", 5), c("5", "5"), "7"), Date = c(seq(as.Date('2017-01-01'), as.Date('2017-01-4'), by = 'days'), c(as.Date('2017-01-3'), as.Date('2017-01-3')), as.Date('2017-01-06'), as.Date('2017-01-4'), as.Date('2017-01-5'), c(as.Date("2017-02-01"), as.Date('2018-01-02'), as.Date('2018-01-03'))), Event = c(0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1))
Фрейм данных результата:
result_df <- data.frame(ID = c(rep("1", 4), rep("4", 5), c("5", "5"), "7"), Date = c(seq(as.Date('2017-01-01'), as.Date('2017-01-4'), by = 'days'), c(as.Date('2017-01-3'), as.Date('2017-01-3')), as.Date('2017-01-06'), as.Date('2017-01-4'), as.Date('2017-01-5'), c(as.Date("2017-02-01"), as.Date('2018-01-02'), as.Date('2018-01-03'))), Event = c(0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1), Sent = c(0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0))