首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中检索向量的键?

如何在R中检索向量的键?
EN

Stack Overflow用户
提问于 2013-02-11 00:47:50
回答 1查看 73关注 0票数 2

我正在努力寻找标准普尔500指数中收益率超过x%的月份。下面的代码可以找到这样的实例:

代码语言:javascript
复制
getSymbols('^GSPC', from='2010-01-01')
G <- monthlyReturn(Cl(GSPC))
names(G) <- 'RET.M'
G[G$RET.M>.05]

现在,我想了解一下,这些实例每年的回报是多少?我知道我可以这样计算每年的回报:

代码语言:javascript
复制
G$RET.Y <- yearlyReturn(Cl(GSPC))

但现在,我想查询G$RET.Y,以获得收益率为5%或更高的月份的年回报率。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 01:07:52

您可以合并它们,使用带有fromLast=TRUEna.locf向后填充,然后按正常方式子集

代码语言:javascript
复制
G$RET.Y <- yearlyReturn(Cl(GSPC))
G$RET.Y <- na.locf(G$RET.Y, fromLast=TRUE)
G$RET.Y[G$RET.M > 0.05]
#                   RET.Y
#2010-03-31  0.1100186233
#2010-07-30  0.1100186233
#2010-09-30  0.1100186233
#2010-12-31  0.1100186233
#2011-10-31 -0.0000318056
#2013-01-31  0.0643252302

或者,您可以将索引格式化为年份的字符表示形式-- format(index(G[G$RET.M > 0.05]), "%Y") --然后用它来设置年度数据的子集

代码语言:javascript
复制
do.call(rbind, lapply(format(index(G[G$RET.M > 0.05]), "%Y"), function(x) {
  yearlyReturn(Cl(GSPC))[x]
}))
#           yearly.returns
#2010-12-31   0.1100186233
#2010-12-31   0.1100186233
#2010-12-31   0.1100186233
#2010-12-31   0.1100186233
#2011-12-30  -0.0000318056
#2013-02-08   0.0643252302
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14800046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档