Nach Ihrer Frage, Ihr gewünschtes Ergebnis ist:
df
# count acc_sum
# 1 1 1
# 2 2 3
# 3 3 6
# 4 4 10
# 5 5 15
# 6 6 21
# 7 7 27
# 8 8 33
# 9 9 39
# 10 10 45
Dies kann wie folgt geschehen:
df <- data.frame(count=1:10)
library(zoo)
df$acc_sum <- rev(rollapply(rev(df$count), 6, sum, partial = TRUE, align = "left"))
dieses Ergebnis zu erhalten, wir die Reihenfolge des df$count
aufheben, fassen wir Die Elemente (unter Verwendung von partial = TRUE
und align = "left"
ist hier wichtig), und wir kehren das Ergebnis um, damit der Vektor benötigt wird.
Beachten Sie, dass dies 6 Elemente summiert, nicht 5. Entsprechend dem Code in Ihrer Frage gibt dies die gleiche Ausgabe. Wenn Sie nur 5 Zeilen summieren möchten, ersetzen Sie einfach die 6 durch eine 5.
'zoo :: rollsum (df $ count, 6, align =" rechts ", fill = NA)' – Khashaa
@Khashaa danke, rollsum funktioniert. –