我想将以下数据转换为时间序列-因此我可以使用autoplot()
。
我该如何做才能使“年”列位于x轴上? (我知道日期的格式必须为2006年1月1日,我可以接受):
Team PTS W GF GA S SA Year
NSH 88 38 214 233 2382 2365 2014
NSH 104 47 226 202 2614 2304 2015
NSH 96 41 224 213 2507 2231 2016
NSH 94 41 238 220 2557 2458 2017
NSH 117 53 261 204 2641 2650 2018
使用as.ts()
会在Year列中显示一些非常大且无法使用的数字。谢谢!我想使用新的时间序列框架进行预测:ARIMA,VAR等。
答案 0 :(得分:2)
我已经在R中使用ts()函数取得了成功。对于年度数据,代码看起来像这样。
df <- ts(data, frequency = 1, start = 2014)
autoplot(df)
这应该给您想要的结果。
答案 1 :(得分:1)
这会给您您想要的东西吗?
df_ts <- ts(df[ , setdiff(names(df), c("Team", "Year"))],
start = 2014,
end = 2018,
frequency = 1)
class(df_ts)
#[1] "mts" "ts" "matrix"
我从强制中排除了列Team
和Year
,因为Year
似乎没有用,并且Team
是字符类型。来自?ts
时间序列必须至少具有一个观测值,尽管它们不必为数字,但对非数字序列的支持非常有限。
使用ggfortify::autoplot.ts
进行绘制
library(ggfortify)
autoplot(df_ts)
数据
df <- structure(list(Team = c("NSH", "NSH", "NSH", "NSH", "NSH"), PTS = c(88L,
104L, 96L, 94L, 117L), W = c(38L, 47L, 41L, 41L, 53L), GF = c(214L,
226L, 224L, 238L, 261L), GA = c(233L, 202L, 213L, 220L, 204L),
S = c(2382L, 2614L, 2507L, 2557L, 2641L), SA = c(2365L, 2304L,
2231L, 2458L, 2650L), Year = 2014:2018), .Names = c("Team",
"PTS", "W", "GF", "GA", "S", "SA", "Year"), class = "data.frame", row.names = c(NA,
-5L))
修改
在图中显示缺失观测值的一种方法是将隐式缺失观测值转换为显式缺失观测值。我将使用tidyr
的{{1}}
complete()
数据2
library(tidyr)
df_complete <- complete(df_incomplete, Year = min(Year):max(Year))
df_complete_ts <- ts(df_complete[ , setdiff(names(df_complete), c("Team", "Year"))],
start = 2011,
frequency = 1)
autoplot(df_complete_ts)