Как насчет любого из них?
# data.table
library(data.table)
setDT(dat)
dat[, rolling_sum := cumsum(revenue), by=customer_id]
# dplyr
library(dplyr)
dat %>% group_by(customer_id) %>% mutate(rolling_sum = cumsum(revenue))
Если это не те результаты, которые вы ищете, возможно, отредактируйте вопрос, чтобы указать, что ожидается.
year_month customer_id revenue rolling_sum
1: 2018-01-01 1821148 0.00 0.00
2: 2018-01-01 142163579 0.00 0.00
3: 2018-01-01 16295983 0.00 0.00
4: 2018-02-01 1821148 86.57 86.57
5: 2018-02-01 142163579 191.21 191.21
6: 2018-02-01 16295983 0.00 0.00
7: 2018-03-01 1821148 98.18 184.75
8: 2018-03-01 142163579 47.61 238.82
9: 2018-03-01 16295983 241.88 241.88
(Воткак я читаю в данных)
dat <-
read.table(header = T, sep=',', text=
"year_month,customer_id,revenue
2018-01-01,1821148,0.00
2018-01-01,142163579,0.00
2018-01-01,16295983,0.00
2018-02-01,1821148,86.57
2018-02-01,142163579,191.21
2018-02-01,16295983,0.00
2018-03-01,1821148,98.18
2018-03-01,142163579,47.61
2018-03-01,16295983,241.88")