【发布时间】:2014-09-08 13:31:06
【问题描述】:
我有一个数据集,其中包含不等间距的观察结果,并且观察结果经常每天发生不止一次。我想将一个函数应用于我的数据窗口,但我希望这些窗口是按时间而不是按行定义的。例如,我想在我的数据集中计算第 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?
【问题讨论】:
标签: r time-series zoo rollapply