【发布时间】:2017-11-01 03:57:06
【问题描述】:
我的数据框df 是一个包含Datum 和Opbrengst 变量的每日时间序列。 Datum 变量介于 20160101 到 20170521 之间。
Datum Opbrengst
1 20160101 40609276
2 20160102 79381098
3 20160103 114653269
4 20160104 126044535
5 20160105 180472785
...
我想做预测,所以我要做的第一件事是绘制系列以查看系列是否静止(如果它具有季节性)。
但是,日期变量是numeric,所以当我绘制系列时,
ggplot(data=df, aes(x=Datum , y=Opbrengst, group=1)) +
geom_line()+
geom_point()
变成这样:
问题在于该系列跨越了多年,这就是为什么 R 将其视为 numeric series,而不是 time series。
我尝试使用this website中的方法将其转换为日期
df$Datum = as.Date(df$Datum)
但结果不正确:
"57166-06-26" "57166-06-27" "57166-06-28" "57166-06-29" "57166-06-30" "57166-07-01"
我的问题是:
如何将基准变量更改为日期格式,以便在绘制图形时不会出现问题?因为稍后我确实需要同时进行
daily和weekly预测。我知道如果我使用
plot.ts(),那么我不需要更改时间格式。我也可以在ggplot中做时间序列图吗?
[编辑]
这是数据的一个样本:
df <- structure(list(Datum = 20160101:20160120, Opbrengst = c(40609276,
79381098, 114653269, 126044535, 180472785, 169286880, 149272135,
133645566, 70171285, 150029065, 149172032, 107843808, 138196732,
136460905, 133595660, 61716435, 137309503, 193201850, 140766980,
129859068)), .Names = c("Datum", "Opbrengst"), row.names = c(NA,
20L), class = "data.frame")
【问题讨论】:
-
你能用 dput() 提供一个可重现的例子吗?
-
试试
as.Date.character(df$Datum, format = "%Y %M %d") -
@SBista
as.Date.character(df$Datum, format = "%Y %M %d")返回错误日期,请参阅here -
@UweBlock 对不起,我的错。我的意思是
as.Date.character(Datum, "%Y %m %d")。请注意,它是%m而不是%M。我想%M的日期没有%m指的是month (00-12)
标签: r date ggplot2 time-series prediction