将标准XTS对象转换为季节性图

问题描述 投票:0回答:1

包fpp2有一个很棒的函数ggseaonplot()。我想通过将我的xts对象转换为矩阵来使用它,其中“Years”是行名称,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

r ggplot2 xts
1个回答
2
投票
class(adjusted) 
#[1] "xts" "zoo"

adjustedxts类型,但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

© www.soinside.com 2019 - 2024. All rights reserved.