我正在使用quantmod,我需要找到今天收盘价与第50天收盘价之间的差价。
我试过这个
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
但我无法减去它并收到此错误
Data:
numeric(0)
Index:
numeric(0)
答案 0 :(得分:3)
对于xts对象,二进制数学运算符和逻辑运算符始终在执行操作之前按索引对齐两个对象。因此,如果要在不同时间戳上对观察值使用这些运算符,则需要使用lag
来正确对齐索引值。
require(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
x$diff50 <- lag(x$Close, 50) - x$Close
请注意,lag.xts
违反了lag.ts
和lag.zoo
(<{>未来中的正数k
引用数据)的惯例,以便使用更多标准的正k
约定来引用历史(而非未来)数据。
如果您只想减去在xts对象的单个时间戳上发生的标量值,可以使用coredata
删除索引属性。
nr <- nrow(symbol)
change <- coredata(Cl(symbol)[nr-50]) - Cl(symbol)[nr]