Hier ist ein einfaches Beispiel, das Problem zu veranschaulichen:kann ich die Gruppierungsvariable in einer einzigen dplyr-Anweisung wechseln?
library(data.table)
dt = data.table(a = c(1,1,2,2), b = 1:2)
dt[, c := cumsum(a), by = b][, d := cumsum(a), by = c]
# a b c d
#1: 1 1 1 1
#2: 1 2 1 2
#3: 2 1 3 2
#4: 2 2 3 4
Der Versuch, das gleiche in dplyr
ich nicht tun, weil die erste group_by
persistent ist und die Gruppierung ist sowohl b
und c
:
df = data.frame(a = c(1,1,2,2), b = 1:2)
df %.% group_by(b) %.% mutate(c = cumsum(a)) %.%
group_by(c) %.% mutate(d = cumsum(a))
# a b c d
#1 1 1 1 1
#2 1 2 1 1
#3 2 1 3 2
#4 2 2 3 2
Ist das ein Fehler oder eine Funktion? Wenn es sich um ein Feature handelt, wie würde man dann die data.table
Lösung in einer einzigen Anweisung replizieren?
Tatsächlich wird der Code mit den neueren 'dplyr' Versionen korrekt funktionieren, da' dplyr' den Aggregationslevel für jede 'muate' /' summarise' Operation abbricht. –