I wie unten einen Datenrahmen haben:R dplyr - rollmean durch Spalten mit Gruppe
(Finden Sie Bild, wenn die Daten nicht als pro-Format)
Sample Data
date id name loc mean count mean
9/6/2016 kar1 AAA 100004 0 1
9/8/2016 kar1 AAA 100004 0 3
9/9/2016 kar1 AAA 100004 0 4
9/10/2016 kar1 AAA 100004 0 5
9/11/2016 kar1 AAA 100004 0 6
9/12/2016 kar1 AAA 100004 0 7
9/13/2016 kar1 AAA 100004 0 8
9/14/2016 kar1 AAA 100004 0 9
9/7/2016 blr1 BBB 100004 0 2
versuchen ((7 Tage ins Rollen zu berechnen Durchschnitt) 3 Tage rollender Durchschnitt (vorheriger 3 Tag und folgender 3 Tag) auf Zählfeld basierend auf ID, Name, Lok, aber die Ergebnisse sind nicht wie erwartet.
Unten finden Sie den Code ein:
fnrollmean <- function(x) rollmean(df$count,7,na.pad=TRUE,align="center")
rollmeandf <- df %>% group_by(id,name,loc) %>% arrange(id,name,loc) %>% mutate(funs=fnrollmean(df$count))
ich Fehler:
Fehler bei eval (Ersatz (expr), envir, enclos): unvereinbar Größe (9), in der Erwartung 8 (die Gruppengröße) oder 1
Wenn ich nur tun:
test2 <- df %>% mutate(funs=fnrollmean(df$count))
es funktioniert, aber berechnet durch die Berücksichtigung aller Krankheiten, die falsch sind.
Bitte lassen Sie mich wissen, wenn etwas oder irgendeine Arbeit fehlt.
Erwartete Ergebnisse:
date id name loc mean count mean
9/6/2016 kar1 AAA 100004 0 1 NA
9/8/2016 kar1 AAA 100004 0 3 NA
9/9/2016 kar1 AAA 100004 0 4 NA
9/10/2016 kar1 AAA 100004 0 5 4.8
9/11/2016 kar1 AAA 100004 0 6 6
9/12/2016 kar1 AAA 100004 0 7 NA
9/13/2016 kar1 AAA 100004 0 8 NA
9/14/2016 kar1 AAA 100004 0 9 NA
9/7/2016 blr1 BBB 100004 0 2 NA
Dank
Ihre 'fnrollmean' Funktion benötigt das 'x' Argument zu verwenden, die übergeben wird hinein (anstelle von 'df $ count'). In Ihrem Aufruf zum 'mutieren' sollten Sie' count', nicht 'df $ count' verwenden. Aber selbst diese Änderungen führen immer noch zu einem Fehler. Ich bin nicht genug vertraut mit dem _zoo_ Paket, um weiter zu kommentieren. – jdobres