我有一个数据集具有不等间隔的观察结果,并且观察结果经常每天发生不止一次。我想将一个函数应用于我的数据窗口,但我希望这些窗口是按时间而不是按行定义的。例如,我想在我的数据集中计算第 1-5 天、第 2-6 天等的平均值,第 1-5 天可能对应于第 1-13 行,第 2-6 天对应于第 3 行- 18等
我看到该rollapply
函数接受zoo
对象,并且我认为它会像我上面描述的那样工作(即将该函数应用于由时间定义的窗口而不是由行定义的窗口)。但是,情况似乎并非如此:
my.ts = zoo( 1:100, as.Date("201401","%Y%j")+1:100 )
mean1 = rollapply( my.ts, 3, mean, align="right" )
my.ts = zoo( 1:100, as.Date("201401","%Y%j")+1:100/2 )
mean2 = rollapply( my.ts, 3, mean, align="right" )
all( mean1==mean2 )
我预计mean2
会有所不同,mean1
因为mean2
每天有两次观察而不是一次。但是,似乎rollapply
使用行来定义窗口而不是zoo
对象的时间。有解决办法吗?或者,可能我应该使用其他一些功能来代替rollapply
?