合并 quantmod::getSymbols 的输出

Merge output from quantmod::getSymbols

我看了很多关于合并 R 数据帧的条目,但是我不清楚它们,他们谈论 merging/joining 使用公共列,但在我的情况下它错过了或者我可能不知道如何提取。这就是我正在做的。

library(quantmod)
library(xts)
start = '2001-01-01'
end = '2015-08-14'
ticker = 'AAPL'
f = getSymbols(ticker, src = 'yahoo', from = start, to = end, auto.assign=F)
rsi14 <- RSI(f$AAPL.Adjusted,14)

我期望的输出是 frsi14 的所有列按日期匹配,但是 'date' 不能作为列使用,所以不确定如何加入。我也必须加入几个移动平均线列。

你提问的前提是错误的。 getSymbols returns 一个 xts 对象,而不是 data.frame:

R> library(quantmod)
R> f <- getSymbols("AAPL", auto.assign=FALSE)
R> str(f)
An ‘xts’ object on 2007-01-03/2015-08-14 containing:
  Data: num [1:2170, 1:6] 86.3 84 85.8 86 86.5 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:6] "AAPL.Open" "AAPL.High" "AAPL.Low" "AAPL.Close" ...
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
List of 2
 $ src    : chr "yahoo"
 $ updated: POSIXct[1:1], format: "2015-08-15 00:46:49"

xts 对象没有 "Date" 列。它们有一个保存日期时间的 index 属性。 xts extends zoo,因此请参阅 zoo vignettes 以及 xts vignette 和 FAQ 以获取有关如何使用 类.

的信息

合并 xts 对象非常简单:

R> f <- merge(f, rsi14=RSI(Ad(f), 14))

或者您可以只使用 $<- 来 add/merge 现有 xts 对象的列:

R> f$rsi14 <- RSI(Ad(f), 14)