【发布时间】:2021-01-14 13:31:54
【问题描述】:
我执行时间序列分析。 例如数据
df2=structure(list(supplier = c("TKP", "S7", "Travelfusion", "MyAgent",
"S7", "TKP", "Travelfusion", "MyAgent", "TKP", "S7", "MyAgent",
"Travelfusion", "S7", "TKP", "Travelfusion", "MyAgent", "TKP",
"S7", "Travelfusion", "MyAgent"), date = c("2021-01-06", "2021-01-06",
"2021-01-06", "2021-01-06", "2021-01-06", "2021-01-06", "2021-01-06",
"2021-01-06", "2021-01-06", "2021-01-06", "2021-01-06", "2021-01-06",
"2021-01-06", "2021-01-06", "2021-01-06", "2021-01-06", "2021-01-06",
"2021-01-06", "2021-01-06", "2021-01-06"), hour = c(18L, 18L,
18L, 18L, 19L, 19L, 19L, 19L, 20L, 20L, 20L, 20L, 21L, 21L, 21L,
21L, 22L, 22L, 22L, 22L), base_price = c(4770, 49881, 244.45,
0, 39253, 13168, 101.1, 0, 4156, 12946, 0, 0, 51737, 54711, 0,
0, 23875, 41853, 52.61, 0)), row.names = c(NA, 20L), class = "data.frame")
我的代码
u_supplier<-unique(df2$supplier)
u_supplier
for(i in 1:length(u_supplier)) {
s_df<-df[df$supplier==u_supplier[i],]
date_time <- apply(X = s_df[,c('date','hour')],MARGIN = 1, FUN = function(x) {
x = paste(as.vector(x),collapse = "")
return(x)
})
dt_index <- seq(from = as.POSIXct(date_time[1],format = "%m-%d-%Y %H"),
to = as.POSIXct(date_time[length(date_time)],format = "%m-%d-%Y %H"),
by = "hour")
ts_data <- xts(x = s_df$base_price, order.by = dt_index)
names(ts_data)<-c('base_price')
m<-holt(y = ts_data,h = 24*3)
ts_data$hlt = m$fitted
pr_dt_index <- seq(from = as.POSIXct(date_time[length(date_time)],format = "%m-%d-%Y %H")+hours(1),
to = as.POSIXct(date_time[length(date_time)],format = "%m-%d-%Y %H")+hours(24*3),
by = "hour")
pr_s_dt<-cbind(supplier = u_supplier[i],
date = gsub(" ","",format(pr_dt_index, "%e/%e/%Y")),
hour = hour(pr_dt_index),
weekday = as.POSIXlt(pr_dt_index)$wday,
base_price = round(m$mean,2))
write.csv(x = data.frame(pr_s_dt),file = paste0(u_supplier[i],"_results.csv"),row.names = F,quote = F)
p<-plot(ts_data, main = paste(u_supplier[i],'\nMAE=',round(MAE(y_pred = ts_data$hlt,y_true = ts_data$base_price),2)))
print(p)
}
我不明白为什么会出现这个错误
Error in seq.int(0, to0 - from, by) : 'to' must be a finite number
我在这里看到了类似的主题和解决方案,但这对我没有帮助。 如何修复我的数据中的这个错误?
【问题讨论】:
-
您是否在示例中提供了
df对象?我只看到df2 -
在
dt_index或pr_dt_index是否出错?
标签: r dplyr data.table