【发布时间】:2013-11-21 18:43:56
【问题描述】:
我遇到了一点 R 问题。假设我有一个结构如下的动物园数据集:
df<-data.frame(r1=rnorm(25), r2=rnorm(25))
df<-zoo(df, as.Date(seq(from=as.Date("1980-01-01"), to=as.Date("1983-02-01"), by="1 month")))
我想按以下方式(伪代码)计算 r1 和 r2 每月的季度平均值:
rx (Jan. 1980) = rx (Jan. 1980)
rx (Feb. 1980) = average [ rx (Jan. 1980), rx (Feb. 1980) ]
rx (Mar. 1980) = average [ rx (Jan. 1980), rx (Feb. 1980), rx (Mar. 1980)]
rx (Apr. 1980) = rx (Apr. 1980)
rx (May 1980) = average [ rx (Apr. 1980), rx (May 1980) ]
rx (Jun. 1980) = average [ rx (Apr. 1980), rx (May 1980), rx (Jun. 1980)]
等等。 - 也就是说,我想将每个月的值替换为该季度截至本季度这一点的已实现观察值。
我已经尝试过 rollapply(对于参数宽度 = 2 的第 2 个月,align = "right";对于宽度 = 3 的第 3 个月),但我觉得要么我想不出最聪明的方法它,或者有更好/更快的方法来做到这一点......任何建议将不胜感激!
谢谢,菲利普
【问题讨论】:
-
只是让您知道您的
r1和r2向量的长度只有25,但是您的日期长度是38,所以df的最后13 行是重复的。这是你的意图吗? -
@Nick:我的错。应该都是 25 obs。