从quantmod :: getSymbols合并输出

问题描述:

我查看了很多关于合并R数据框的条目,但他们对我来说并不清楚,他们谈论的是使用公共列合并/合并,但在我的案例中,它错过了,不知道如何提取。这是我正在做的。从quantmod :: getSymbols合并输出

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) 

我期待的输出是f所有列,rsi14比赛日期,但“日期”是不能作为列,所以不知道我该如何加入。我也必须加入几个移动平均值列。

+2

人们自愿在这里帮助,请不要让我们安装软件包并下载数据,以便查看数据的外观。我建议你阅读[this](http://*.com/questions/5963269/how-to-make-a-great-r-reproducible-example)和[this](http://*.com/help/mcve),然后提供更多信息。 – r2evans

+2

你的问题的前提是错误的,因为'getSymbols'返回一个xts对象,而不是data.frame。合并xts对象与'f

+0

@JoshuaUlrich我认为如果您将此评论发布为答案将会很好。我一直看到有人试图将xts对象(由'quantmod'以这种格式生成,出于一个很好的原因)转换为data.frames。 – RHertel

你的问题的前提是错误的。 getSymbols返回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对象没有一个 “日期” 一栏。它们具有保存日期时间的index属性。 xts扩展了动物园,因此请参阅动物园小插曲以及xt小插曲和常见问题以获取有关如何使用这些类的信息。

合并XTS对象是简单的:

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

或者你可以只用$<-添加/合并列到现有的XTS对象:

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

谢谢,还有一个问题,我如何从XTS对象检索DATE列,我在另一个线程中看到使用index(f)其中f是XTS对象,index(f)返回日期为一个数组,但我正在寻找添加它作为另一列以及由XTS对象返回的其他列 - 再次感谢。 – user4488573

+0

@ user4488573:没有日期栏。 xts/zoo对象是一个带有索引属性的矩阵,这是存储日期的地方。不要将它添加为另一列。你不能在矩阵中混合类型,而矩阵也不能包含分类对象,所以你的日期将被转换为整数/数字。 –