我有一个xts对象,其中包含以下形式的一系列月度复合股票回报:
AALBERTS ABN_AMRO ABN_LNAM ACCELL_G AEGON___
1973-01 NA NA NA NA NA
1973-02 NA NA NA NA -4.42149834
1973-03 NA NA NA NA 0.03759308
1973-04 NA NA NA NA -1.09827283
1973-05 NA NA NA NA -7.30252682
1973-06 NA NA NA NA -8.98970349
1973-07 NA NA NA NA -5.59685493
: : : : : :
: : : : : :
我想做出以下选择:选择仅那些股票,它们在 t 时都有有效的返回数据,并且在前一个中有效返回数据t-12 个月。满足上述标准的股票需要添加到以下列方式格式化的单独xts对象中:
1974-01 AEGON___ <mean of the values from t-12 to t>
1974-01 <other stock> <mean of the values from t-12 to t>
1974-01 <other stock> <mean of the values from t-12 to t>
: : :
1974-02 <other stock> <mean of the values from t-12 to t>
到目前为止,我无法解决这个问题,因为此时我对R的经验和理解非常有限,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
由于xts对象是具有索引属性的矩阵,因此不能混合类型。这意味着您希望结果看起来像什么的例子是不可能的。也就是说,您可以使用rollapply
函数。
require(quantmod)
getSymbols("SPY;QQQQ")
x <- merge(ROC(Cl(SPY)),ROC(Cl(QQQQ)))
#mx <- rollapply(x, 12, mean, na.rm=TRUE) # default align="center"
mx <- rollapply(x, 12, (mean), align="right")
head(mx)
# SPY.Close QQQQ.Close
# 2007-01-10 NA NA
# 2007-01-11 0.0005932477 0.0008627708
# 2007-01-12 0.0006620534 -0.0009128343
# 2007-01-16 0.0019978226 0.0008508299
# 2007-01-17 0.0006291557 -0.0002853558
# 2007-01-18 0.0006238259 -0.0010075785