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

desiredie 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)]]
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage