Angenommen, ich habe das folgende Skript, das eine DatentabelleKonstruieren Sie eine Spalte mit verzögerten Werten
library(data.table)
dt <- data.table(a = c(1,2,3,4,5), b = c(6,7,8,9,10), c = c(22,0,0,0,0))
Ich möchte ersetzen die Werte von c
in Reihen 2 bis 5 erzeugt als
a b c
1: 1 6 22
2: 2 7 31
3: 3 8 42
4: 4 9 55
5: 5 10 70
folgt die ist etwas wie
c = a + b + shift(c, n = 1, fill = 0, type="lag")
Mit anderen Worten, halten Sie Zeile 1 gleich und wenden Sie die Formel an 2 Zeilen 5.
Ich habe versucht,
dt[2:nrow(dt), c := a + b + shift(c, n = 1, fill = 0, type="lag")]
aber das gibt
a b c
1: 1 6 22
2: 2 7 9
3: 3 8 11
4: 4 9 13
5: 5 10 15
Irgendwelche Vorschläge?
Ich bin nicht sicher, ob dies data.tablish ist, aber eine Variante deines Versuchs funktioniert: 'dt [-1L, c: = cumsum (a + b) + dt $ c [1L]]' – Frank