R中年初至今的平均值

时间:2017-10-03 13:50:58

标签: r zoo moving-average

我如何计算R中数据集的(财务)年初至今的平均值?

我的数据形式如下:

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")

到目前为止,我计算了5天滚动平均值。我添加了一个财务年度专栏,用于年初至今的平均值。所以,我想要的是一个额外的列,它等于FY1第一天的第一个值,第二个值是前2天的平均值,第三个值是平均值3等等。

1 个答案:

答案 0 :(得分:3)

使用ave按财务年度分组,然后使用cumsum(x)/seq_along(x)计算年初至今的平均值。没有包使用。

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