1
ich auf einer Säule Roll Berechnungen mache, den Code unten mitDoing Roll Berechnungen benutzerdefinierte mit data.table für mehrere Spalten
dt <- data.table(x1=1:8,x2=2:10,x3=4:11,x4=6:12)
N = 3L
dt[, y1 := (2*dt$x1[.I] -dt$x1[(.I+N-1L)]), by=1:nrow(dt)]
dt
x1 x2 x3 x4 y1
1: 1 2 4 6 -1
2: 2 3 5 7 0
3: 3 4 6 8 1
4: 4 5 7 9 2
5: 5 6 8 10 3
6: 6 7 9 11 4
7: 7 8 10 12 13
8: 8 9 11 6 NA
9: 1 10 4 7 NA
sdcols=paste0("x",1:4)
wie benutzt man sdcols das gleiche Ergebnis für Spalten x1 bis x4 zu erreichen, die Schaffung neuer Spalten Y1 bis Y4
die Lösung funktioniert und ist elegant. Ich habe Probleme, dieses Stück zu entschlüsseln c ((2 * shift (x) - shift (x, type = 'lead')) [- 1], NA)). Warum c, warum [-1] und warum NA? Könnten Sie helfen zu klären? – ashleych
@ashleych Ich habe das verwendet, um die erste Beobachtung zu entfernen und dann mit NA am Ende anhängen, um die Ausgaben zu erhalten – akrun
Ich verstehe nicht wirklich, wie dies für andere Werte der OP-Variablen 'N = 3 'übersetzen würde. – Frank