Я наблюдаю за количеством покупок разных клиентов в несколько дней (1 = покупка, 0 = нет покупки). Теперь для каждого дня я хочу суммировать количество покупок конкретного клиента за предыдущие 2 дня и текущий день, то есть всего за 3 дня.
Пример данных:
da <- data.frame(customer_id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4),
day = c("2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15","2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15","2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15","2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15"),
purchase = c(1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1))
> da
customer_id day purchase
1 1 2016-04-11 1
2 1 2016-04-12 1
3 1 2016-04-13 1
4 1 2016-04-14 0
5 1 2016-04-15 1
6 2 2016-04-11 0
7 2 2016-04-12 0
8 2 2016-04-13 1
9 2 2016-04-14 1
10 2 2016-04-15 0
11 3 2016-04-11 1
12 3 2016-04-12 1
13 3 2016-04-13 1
14 3 2016-04-14 1
15 3 2016-04-15 0
16 4 2016-04-11 1
17 4 2016-04-12 0
18 4 2016-04-13 1
19 4 2016-04-14 0
20 4 2016-04-15 1
Результат, который я ищу:
output_da <- data.frame(customer_id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4),
day = c("2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15","2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15","2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15","2016-04-11","2016-04-12","2016-04-13","2016-04-14","2016-04-15"),
purchase = c(1,1,1,0,1,0,0,1,1,0,1,1,1,1,0,1,0,1,0,1),
purchases_last_3_days = c(1,2,3,2,2,0,0,1,2,2,1,2,3,3,2,1,1,2,1,2))
output_da
customer_id day purchase purchases_last_3_days
1 1 2016-04-11 1 1
2 1 2016-04-12 1 2
3 1 2016-04-13 1 3
4 1 2016-04-14 0 2
5 1 2016-04-15 1 2
6 2 2016-04-11 0 0
7 2 2016-04-12 0 0
8 2 2016-04-13 1 1
9 2 2016-04-14 1 2
10 2 2016-04-15 0 2
11 3 2016-04-11 1 1
12 3 2016-04-12 1 2
13 3 2016-04-13 1 3
14 3 2016-04-14 1 3
15 3 2016-04-15 0 2
16 4 2016-04-11 1 1
17 4 2016-04-12 0 1
18 4 2016-04-13 1 2
19 4 2016-04-14 0 1
20 4 2016-04-15 1 2
Я знаю о функции cumsum, но не знаю, как выбрать количество X строк, предшествующих каждому текущему дню.