Ich versuche, "rolling" Zusammenfassungsstatistiken basierend auf einem Gruppierungsfaktor zu berechnen. Gibt es einen einfachen Weg, nach (überlappenden) Gruppen zu verarbeiten, basierend auf (sagen wir) einem geordneten Faktor?
Zum Beispiel, sagen wir, ich möchte die Summe von val
nach Gruppen berechnen
df <- data.frame(grp = c("a", "a", "b", "b", "c", "c", "c"),
val = rnorm(7))
Für Gruppen basierend auf grp
ist es einfach:
df %>% group_by(grp) %>% summarise(total = sum(val))
# Ergebnis:
grp total
1 a 1.6388
2 b 0.7421
3 c 1.1707
Was ich jedoch tun möchte, ist "rolling" Summen für aufeinanderfolgende Gruppen ("a" & "b", dann "b" & "c", usw.) zu berechnen. Die gewünschte Ausgabe wäre so etwas wie dies:
grp1 grp2 total
1 a b 1.6388
2 b c 0.7421
Ich habe Schwierigkeiten, dies in dplyr zu tun. Insbesondere kann ich anscheinend nicht herausfinden, wie man "überlappende" Gruppen erhält - die "b" Zeilen im obigen Beispiel sollten in zwei Ausgabegruppen landen.