Как я могу дать даты в виде имен строк во фрейме данных quantmod :: getSymbols? - PullRequest
0 голосов
/ 03 мая 2018

Как я могу преобразовать вывод из getSymbols, чтобы в качестве имен строк были указаны даты? Вот мой код до сих пор.

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 голосов
/ 03 мая 2018

Создатели 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)
0 голосов
/ 03 мая 2018

Значения цен акций в Quantmod на самом деле не являются ни data.frames, ни матрицами, хотя они построены из компонентов, имеющих матричную структуру, и они в некоторой степени похожи на zoo -объекты:

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"

Таким образом, объект AAPL имеет числовую матрицу с именем «Данные» и отдельный индекс класса Date:

> 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

Я подозреваю, что вы, возможно, захотите попробовать принуждение к объекту фрейма данных:

str( as.data.frame(AAPL) )
#--------
'data.frame':   2852 obs. of  6 variables:
 $ AAPL.Open    : num  12.3 12 12.3 12.3 12.3 ...
 $ AAPL.High    : num  12.4 12.3 12.3 12.4 13.3 ...
 $ AAPL.Low     : num  11.7 12 12.1 12.2 12.2 ...
 $ AAPL.Close   : num  12 12.2 12.2 12.2 13.2 ...
 $ AAPL.Volume  : num  309579900 211815100 208685400 199276700 837324600 ...
 $ AAPL.Adjusted: num  8.1 8.28 8.23 8.27 8.95 ...

row.names( as.data.frame(AAPL) )[:16]
#---------
   [1] "2007-01-03" "2007-01-04" "2007-01-05" "2007-01-08" "2007-01-09" "2007-01-10" "2007-01-11" "2007-01-12"
   [9] "2007-01-16" "2007-01-17" "2007-01-18" "2007-01-19" "2007-01-22" "2007-01-23" "2007-01-24" "2007-01-25"
...