Превращение стандартного объекта XTS в сезонный график - PullRequest
0 голосов
/ 02 апреля 2019

В пакете fpp2 есть замечательная функция ggseaonplot (). Я хотел бы использовать его, превратив мой объект xts в матрицу, где «Годы» - это имена строк, а 12 месяцев - имена столбцов.

#here is the data. This is stock data from yahoo finance
library(quantmod)
getSymbols("SPY")
adjusted = Ad(SPY)
head(adjusted)

enter image description here

#here is an example of what I would like the data to look like using the  
AirPassengers matrix.
dput(AirPassengers)
structure(c(112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 
104, 118, 115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114, 
140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166, 
171, 180, 193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196, 
196, 236, 235, 229, 243, 264, 272, 237, 211, 180, 201, 204, 188, 
235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267, 
269, 270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313, 
318, 374, 413, 405, 355, 306, 271, 306, 315, 301, 356, 348, 355, 
422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435, 
491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 
559, 463, 407, 362, 405, 417, 391, 419, 461, 472, 535, 622, 606, 
508, 461, 390, 432), .Tsp = c(1949, 1960.91666666667, 12), class = "ts")

enter image description here

Вот как должен выглядеть финальный проект.

library(fpp2)
ggseasonplot(AirPassengers)

enter image description here

1 Ответ

2 голосов
/ 02 апреля 2019
class(adjusted) 
#[1] "xts" "zoo"

adjusted имеет тип xts, но ggseasonplot требуется объект типа ts.

Вот альтернатива с ggplot2 хотя

Подготовить данные

library(zoo)
df <- data.frame(date = index(adjusted),value = coredata(adjusted),row.names = NULL)
df$month <- factor(format(df$date, "%b"), levels = month.abb)
df$year <- format(df$date, "%Y")

График данных

library(ggplot2)

ggplot(df) +
   aes(month, SPY.Adjusted, group = year, color = year) + 
   geom_line()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...