2

我有一个 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 的经验和理解非常有限,因此非常感谢任何帮助。

4

1 回答 1

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
于 2011-03-27T16:22:11.463 回答