Gruppenübergreifende Summe der neuesten Werte
Für jede Zeile meiner Daten möchte ich die Summe der neuesten @ berechnvalue
für jedesgroup
:
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
ie Spalte @ ist das, was ich erreichen möchte, und ich kann dies mit einer naiven Schleife tun, aber meine Daten sind mit vielen Zeilen und Gruppen (mehr als 1 Million Zeilen, mehr als 1000 Gruppen) ziemlich groß.
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)]]
}