2017-10-03 3 views
1

Wie würde ich den (finanziellen) Jahresdurchschnitt eines Datensatzes in R berechnen?rollendes Jahr bis heute Durchschnitt in R

Meine Daten sind von der Form:

library(zoo) 
DF=data.frame(Day=seq(as.POSIXct("2017-03-01"), as.POSIXct("2017-06-07"),"day"),Value=rnorm(98,1,2)) 
DF$`5day_rolling`=rollmean(DF$Value,5,fill=NA,align="left") 

DF$Financial_yr=as.numeric(format(DF$Day, "%Y")) + (format(DF$Day, "%m") >= "04") 

Wo habe ich bisher den 5 Tage Roll Mittelwert berechnet. Ich habe eine Geschäftsjahresspalte hinzugefügt, die für den Jahresdurchschnitt verwendet werden soll. Also, was ich möchte, ist eine zusätzliche Spalte, die gleich dem ersten Wert des ersten Tages von FY1 beginnt, wobei der zweite Wert ein Durchschnitt der ersten 2 Tage ist, der dritte Mittelwert von drei usw.

Antwort

3

Verwenden Sie ave, um nach Geschäftsjahr zu gruppieren, und verwenden Sie dann cumsum(x)/seq_along(x), um den Jahresdurchschnitt zu berechnen. Keine Pakete werden verwendet.

cumavg <- function(x) cumsum(x)/seq_along(x) 
transform(DF, avg_ytd = ave(Value, Financial_yr, FUN = cumavg)) 
+0

Perfekt, danke! – sym246