Переформатирование объекта xts на основе критериев - PullRequest
2 голосов
/ 27 марта 2011

У меня есть объект 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 в данный момент очень ограничены, поэтому любая помощь приветствуется.

1 Ответ

0 голосов
/ 27 марта 2011

Поскольку объекты 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...