如何将日期作为来自quantmod :: getSymbols的数据框的rownames?

时间:2018-05-02 21:17:51

标签: r dataframe tidyverse quantmod

如何将getSymbols的输出转换为rownames的日期?到目前为止,这是我的代码。

library("quantmod")
library("coindeskr")
getSymbols("AAPL")
> [1] "AAPL"
row.names(head(Cl(AAPL)))
> NULL
btc <- get_historic_price(start = "2017-01-01")
row.names(head(btc))
> [1] "2017-01-01" "2017-01-02" "2017-01-03" "2017-01-04" "2017-01-05" "2017-01-06"

2 个答案:

答案 0 :(得分:3)

quantmod中股票价格的价值实际上不是data.frames或matrices,尽管它们是由具有矩阵结构的组件构建的,它们与SimpleTestClass.setUpClass有些相似 - 对象:

zoo

因此AAPL对象有一个名为“Data”的数字矩阵和一个类Date的单独索引:

str(AAPL)
#---------
An ‘xts’ object on 2007-01-03/2018-05-01 containing:
  Data: num [1:2852, 1:6] 12.3 12 12.3 12.3 12.3 ...
 - 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: "2018-05-02 16:49:23"

您需要了解干净地访问它们所需的结构和特殊功能。看看:

> str( index(AAPL) )
 Date[1:2852], format: "2007-01-03" "2007-01-04" "2007-01-05" "2007-01-08" "2007-01-09" "2007-01-10" "2007-01-11" "2007-01-12" ...
> str( coredata(AAPL) )
 num [1:2852, 1:6] 12.3 12 12.3 12.3 12.3 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:6] "AAPL.Open" "AAPL.High" "AAPL.Low" "AAPL.Close" ...

我怀疑你可能想要对数据帧对象进行强制攻击:

 ?xts
 ?xtsAttributes

答案 1 :(得分:2)

anomalize的创建者有另一个你可能会觉得有用的包。它被称为tidyquant,非常适合您的目标。

library(anomalize)
library(tidyquant)
library(tidyverse)   
获取财务数据的整洁方式
aapl <- tq_get("AAPL")
参考您的最终目标,我们可以绘制AAPL自2008年以来的异常情况。
aapl %>% 
 time_decompose(adjusted) %>%
 anomalize(remainder) %>%
 time_recompose() %>%
 plot_anomalies(time_recomposed = TRUE, ncol = 3, alpha_dots = 0.5)