R - 日期分配问题 - 如何纠正?

时间:2018-04-19 18:55:54

标签: r forecasting tidyverse

我在尝试分配值时遇到问题。 这看起来很奇怪,因为在我将相同的命令应用到另一个数据集之后,它就可以了。

下面你会看到一些截图:

数据集#1 步骤1:加载数据集1并使用ts函数。 Dataset #1

步骤2:基于数据集1创建新对象并重新格式化日期。 (错误地创建) Reshape date values

数据集#2 步骤1:加载数据集1并使用ts函数。 Load dataset #2

步骤2:基于数据集1创建新对象并重新格式化日期。 (正确创建) enter image description here

以上是正确代码所示的代码:

# Load required libraries
library(forecast)
library(lubridate)
library(tidyverse)
library(scales)
library(ggfortify)

# Load historical SLA definitions
bwi <- read.csv(file="C:/Users/nsoria/Documents/Data Science/SLA Prediction/TEC_BWI.csv", header=TRUE, sep=';', dec=",")

# Create time series object
ts_bwi <- ts(bwi$SLA, frequency = 12, start = c(2015,1))

############################################ STL Model Algorithm
# Pull out the seasonal, trend, and irregular components from the time series
model_stl <- stl(ts_bwi, s.window = "periodic")

############################################ ARIMA Model Algorithm
# Pull out the seasonal, trend, and irregular components from the time series
#model_arima <- auto.arima(ts_bwi)

# Predict the next 5 month of SLA (STL)
pred <- forecast(model_stl, h = 5)

# Predict the next 5 month of SLA (ARIMA)
#pred <- forecast(model_arima, h = 5)

# Convert pred from list to data frame object
df1 <- fortify(pred) %>% as_tibble()

# Convert ts decimal time to Date class
df1$Date <- as.Date(date_decimal(df1$Index), "%Y-%m-%d")

以下是失败的数据集的link

谢谢。 尼古拉斯。

1 个答案:

答案 0 :(得分:0)

它按照你的要求去做。

&#34;错误&#34; df1$Index已经是约会了。你不需要把它转换成任何东西。当你做的时候,特别是你做的那样,有趣的事情发生了。

date_decimal函数想要一个像2015.123这样的数字并给你&#34; 2015-02-14 21:28:48 UTC&#34;。

如果你做了一些疯狂的事情:

date_decimal(as.Date("2015-01-01"))

然后它首先将as.Date("2015-01-01")视为实际数字(16436,即自1970-01-01以来的天数),然后它会给你16436-01-01,(正是你问的那个)为。)

您的解决方案是要注意您已有日期,因此无法转换为日期。

此外,您的代码会给您警告。不要忽视警告。