R中滚动时间窗的算术计算

时间:2017-08-14 08:17:18

标签: r loops

我有面板数据,想要在每个月的每个观察点对特定的滚动时间帧(例如-12个月到当前)进行简单的算术计算:

。 " MRAR(1y)=((sum(1 + ER(-12,0))^ - 2)/ 12)-1"。 ER数据看起来像这样(预期输出在最右边。请注意其他观察结果包括NA)。

ER.01.2014  ER.02.2014  ER.03.2014  ER.04.2014  ER.05.2014  ER.06.2014  ER.07.2014  ER.08.2014  ER.09.2014  ER.10.2014  ER.11.2014  ER.12.2014  MRAR(1Y).01.2015
-22.42      -12.67      18.61       22.31       -16.81      -45.44      138.84      50.71       -29.77      1.51        -15.35      -12.65      4.405833333

我的方法如下:

ER <- as.data.frame(cbind(ER.08.2007, ER.09.2007, etc. 

cbind(time_series,seq(1:length(time_series)))

time_series <- c("08.2007","09.2007",etc.)

vars <- as.data.frame(cbind(names(ER),substr(names(ER),1,nchar(names(ER))-7),
                  substr(names(ER),nchar(names(ER))-6,nchar(names(ER))))) 

names(vars) <- c("ERdate","ER","date")

ERvars <- as.character(vars[vars$ER=="ER",][,"date"])

for (i in seq(1,length(time_series)))
    {
      aggregate(ER[i-36,0],df,sum)
}

..最后一行只是上面公式的内部部分。

我希望这是正确的方向,循环是我遇到问题的地方。

Error in aggregate.data.frame(x, by, function(x) 0L) : 
  'by' must be a list

0 个答案:

没有答案