首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在xts中减去行

如何在xts中减去行
EN

Stack Overflow用户
提问于 2015-09-07 17:16:00
回答 1查看 1K关注 0票数 4

我正在使用quantmod,我需要找出今天的收盘价和第50天的收盘价之间的差额。

我试过像这样

代码语言:javascript
运行
复制
library(quantmod) 
tickers = 'AAPL'
symbol = getSymbols(tickers,from="2014-04-01",auto.assign=F)
change =(tail(Cl(symbol), 50)[1]-tail(Cl(symbol), 1)[1])
change

但是我无法减去它并得到这个错误。

代码语言:javascript
运行
复制
Data:
numeric(0)

Index:
numeric(0)
EN

Stack Overflow用户

回答已采纳

发布于 2015-09-07 17:23:38

对于xts对象,在执行操作之前,二进制数学和逻辑运算符总是根据它们的索引对齐这两个对象。因此,如果要在不同的时间戳上使用这些运算符,则需要使用lag对索引值进行适当的对齐。

代码语言:javascript
运行
复制
require(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
x$diff50 <- lag(x$Close, 50) - x$Close

请注意,lag.xts打破了lag.tslag.zoo的约定(在未来,正k引用数据)来使用更标准的正k约定来引用历史数据(而不是未来数据)。

如果您只想减去在xts对象的单个时间戳上出现的标量值,则可以使用coredata删除索引属性。

代码语言:javascript
运行
复制
nr <- nrow(symbol)
change <- coredata(Cl(symbol)[nr-50]) - Cl(symbol)[nr]
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32443445

复制
相关文章

相似问题

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