我熟悉允许您对或对象进行滚动计算的zoo
功能,您可以通过参数指定滚动增量。我对每个月应用一个函数特别感兴趣,但在计算中使用所有过去的每日数据。例如,假设我的数据集如下所示:rollapply
zoo
xts
by
dte, val
1/01/2001, 10
1/02/2001, 11
...
1/31/2001, 2
2/01/2001, 54
2/02/2001, 34
...
2/30/2001, 29
我想选择每个月的月底和apply
一个使用所有每日数据的函数。这似乎不起作用,rollapply
因为by
参数有时是 30 个月,其他月份是 29 个月,等等。我目前的想法是:
f <- function(xts_obj) { coef(lm(a ~ b, data=as.data.frame(xts_obj)))[1] }
month_end <- endpoints(my_xts, on="months", k=1)
rslt <- apply(month_end, 1, function(idx) { my_xts[paste0("/",idx)] })
当然有更好的方法可以更快地做到这一点,不是吗?澄清一下:我想使用重叠的时间段,只是滚动应该每月进行一次。