Для каждой строки моих данных я бы хотел вычислить сумму последнего value
для каждого group
:
dt = data.table(group = c('a','b','a','a','b','a'),
value = c(10, 5, 20, 15, 15, 10),
desired = c(10, 15, 25, 20, 30, 25))
# group value desired
#1: a 10 10
#2: b 5 15
#3: a 20 25 # latest value of a is 20, of b is 5
#4: a 15 20 # latest value of a is 15, of b is 5
#5: b 15 30
#6: a 10 25
Столбец desired
- это то, чего я хочу достичь, и я могу сделать это с наивным циклом, но мои данные довольно велики с большим количеством строк и групп (1M + строк, 1000+ групп).
for (i in seq_len(nrow(dt))) {
# can use `set` to make this faster, but still too slow
# this is just to illustrate *a* solution
dt[i, desired1 := dt[1:i, value[.N], by = group][, sum(V1)]]
}