【问题标题】:Merge output from quantmod::getSymbols合并来自 quantmod::getSymbols 的输出
【发布时间】:2015-08-15 04:40:38
【问题描述】:

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

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 的所有列按日期匹配,但是“日期”不能用作列,所以不知道如何加入。我还必须加入一些移动平均线列。

【问题讨论】:

  • 这里的人是自愿提供帮助的,请不要让我们安装软件包和下载数据只是为了查看数据的样子。我建议您阅读this 和this,然后提供更多信息。
  • 你问题的前提是错误的,因为getSymbols返回的是xts对象,而不是data.frame。合并 xts 对象就像f &lt;- merge(f, rsi14) 一样简单。
  • @JoshuaUlrich 我认为如果您发布此评论作为答案会很好。我不断看到人们尝试将 xts 对象(由 quantmod 以这种格式生成)转换为 data.frames 的帖子。
  • @RHertel:会的,但我要睡觉了。 :)

标签: r dataframe merge xts quantmod


【解决方案1】:

你的问题的前提是错误的。 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 扩展了 zoo,因此请参阅 zoo vignettes 以及 xts vignette 和 FAQ 以了解有关如何使用这些类的信息。

合并 xts 对象很简单:

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

或者您可以只使用$&lt;- 将列添加/合并到现有 xts 对象:

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

【讨论】:

  • 谢谢,还有一个问题,我如何从 XTS 对象中检索 DATE 列,我在另一个线程中看到你提到使用 index(f) 其中 f 是 XTS 对象,index(f ) 将日期作为数组返回,但我正在考虑将其与 XTS 对象返回的其他列一起添加为另一列 - 再次感谢。
  • @user4488573:没有日期列。 xts/zoo 对象是一个具有索引属性的矩阵,它是存储日期的位置。也不要将其添加为另一列。您不能在矩阵中混合类型,而且矩阵也不能包含分类对象,因此您的 Date 将被转换为整数/数字。
猜你喜欢
  • 2018-05-22
  • 2016-06-02
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多