r - 错误帮助:无效输入:date_trans 仅适用于 Date 类的对象
问题描述
我一直在阅读这个问题的其他解决方案,但所有的修复都没有为我工作。我已将date$Date
列格式化,as.Date
所以我不明白为什么我仍然收到此错误。
我有一个名为的数据框data
,其中包含每个月的总借方金额。数据的头部如下所示:
> head(data)
Date Debit Amount
1 2017-04-01 17611.82
2 2017-05-01 21073.09
3 2017-06-01 18672.41
4 2017-07-01 18521.02
5 2017-08-01 21695.86
6 2017-09-01 17526.62
当我读到需要一天的时间来格式化时,我只是将它们全部作为第一个,Date
所以我这样做了。然后我创建一个时间序列对象:
data_ts = ts(data$`Debit Amount`, frequency = 12, start = c(2017, 4))
接下来,我window
在forecast
库中使用来拆分时间序列。smpl1
将用于预测并将smpl2
绘制预测月份的数据:
smpl1 = window(datatimeseries, start = c(2017, 4), end = c(2019, 3))
smpl2 = window(datatimeseries, start = c(2019, 4))
HoltsWinters
我一直在使用简单指数平滑的 R 网页中进行时间序列分析。然后我使用forecast
,将频率设置为每月 ( h = 12
)。我的代码是:
hw = HoltWinters(smpl1,
gamma = FALSE,
l.start = 17612, # Initial value
b.start = 3461) # Second - initial
fc = forecast(hw, h = 12)
最后,我想用它来绘制它,ggplot2
并发现它ggfortify
可能需要时间序列。我还希望smpl2
绘制数据并找到用于autolayer
执行此操作的方法。所以我有以下内容:
autoplot(fc) +
autolayer(smpl2, series = "Data") +
autolayer(fc$mean, series = "Forecasts")
然后这给了我错误:
Error: Invalid input: date_trans works with objects of class Date only
我尝试的一个修复是添加 ageom_rect
来格式化 x 轴,但这也给了我同样的错误:
autoplot(fc) +
autolayer(smpl2, series = "Data") +
autolayer(fc$mean, series = "Forecasts") +
geom_rect(aes(xmin = as.Date("2017-04-01", "%Y-%m-%d"),
xmax = as.Date("2020-12-01", "%Y-%m-%d")))
我根本不理解这个错误,因为我window
在时间序列对象上使用过,在此之前data$Date
使用 格式化列,使用as.Date
检查:
> str(data)
'data.frame': 45 obs. of 2 variables:
$ Date : Date, format: "2017-04-01" "2017-05-01" "2017-06-01" "2017-07-01" ...
$ Debit Amount: num 17612 21073 18672 18521 21696 ...
对此的任何帮助都会非常感激!
谢谢阅读。
PS我将把完整的代码块放在这里:
data_ts = ts(data$`Debit Amount`, frequency = 12, start = c(2017, 4))
smpl1 = window(datatimeseries, start = c(2017, 4), end = c(2019, 3))
smpl2 = window(datatimeseries, start = c(2019, 4))
hw = HoltWinters(smpl1,
gamma = FALSE,
l.start = 17612, # Initial value
b.start = 3461) # Second - initial
fc = forecast(hw, h = 12)
autoplot(fc) +
autolayer(smpl2, series = "Data") +
autolayer(fc$mean, series = "Forecasts") +
geom_rect(aes(xmin = as.Date("2017-04-01", "%Y-%m-%d"),
xmax = as.Date("2020-12-01", "%Y-%m-%d")))
解决方案
推荐阅读
- xml - 在 XML 中获取多个标签
- redis - 芹菜工人的任务处理被推迟
- angular - 获取服务未在 Angular 6 中调用,即使在网络调用中也不会显示
- php - cakephp 3.8 中的多次插入
- c++ - 抛出异常:读取访问冲突。_Pnext 是 0xCDDC8C
- python - 如何在硒的小视口上拍摄高分辨率屏幕截图?
- categorical-data - 如何处理校准分类器中的分类变量?
- c - 在 c 中,我使用 graphics.h 开发游戏,但在游戏中出现颜色闪烁
- spring - Spring Boot 属性解析传入命令行参数
- android - 你怎么称呼这个键盘微调器(?),我如何用微调器替换它?