R 中滚动年初至今的平均值
Rolling year to date average in R
我如何计算 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 第一天的第一个值开始,第二个值是前两天的平均值,第三个是三天的平均值,依此类推。
使用 ave
按财政年度分组,然后使用 cumsum(x)/seq_along(x)
计算年初至今的平均值。没有使用包。
cumavg <- function(x) cumsum(x) / seq_along(x)
transform(DF, avg_ytd = ave(Value, Financial_yr, FUN = cumavg))
我如何计算 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 第一天的第一个值开始,第二个值是前两天的平均值,第三个是三天的平均值,依此类推。
使用 ave
按财政年度分组,然后使用 cumsum(x)/seq_along(x)
计算年初至今的平均值。没有使用包。
cumavg <- function(x) cumsum(x) / seq_along(x)
transform(DF, avg_ytd = ave(Value, Financial_yr, FUN = cumavg))