我使用xts将数据集转换为时间序列,但是当我绘制数据时,R返回错误代码,说“ x”必须是时间序列。当我检查该类时,将其显示为xts zoo对象。我检查了变量的类别,发现它们都是一个级别的因素。在转换之前,它们是正确的类。
我尝试将变量类转换为xts对象后进行转换,但这无济于事。我还对不同的数据尝试了相同的方法,而其他数据却按预期工作。
rm(list = ls())
tmp = read.csv('file:///C:/Users/cxbon/Documents/R_practice/train_forecast.csv')
head(tmp, 1)
tail(tmp, 1)
time.index = seq(from = as.POSIXct('2012-08-25 00:00'),
to = as.POSIXct('2014-09-25 23:00'), by = "hour")
tmp_ts = xts(tmp, order.by = time.index)
plot(tmp_ts)
traceback()
> dput(head(tmp, 20))
structure(list(ID = 0:19, Datetime = c("25-08-2012 00:00", "25-08-2012 01:00",
"25-08-2012 02:00", "25-08-2012 03:00", "25-08-2012 04:00", "25-08-2012 05:00",
"25-08-2012 06:00", "25-08-2012 07:00", "25-08-2012 08:00", "25-08-2012 09:00",
"25-08-2012 10:00", "25-08-2012 11:00", "25-08-2012 12:00", "25-08-2012 13:00",
"25-08-2012 14:00", "25-08-2012 15:00", "25-08-2012 16:00", "25-08-2012 17:00",
"25-08-2012 18:00", "25-08-2012 19:00"), Count = c(8L, 2L, 6L,
2L, 2L, 2L, 2L, 2L, 6L, 2L, 2L, 6L, 4L, 2L, 6L, 2L, 2L, 2L, 2L,
2L)), row.names = c(NA, 20L), class = "data.frame")
一旦我运行plot(tmp_ts)
,我就会收到错误消息
Error in plot.xts(tmp_ts) : 'x' must be a time-series object
更新
在继续寻找答案之后,我在R帮助站点上找到了一个帖子,有人建议将每一列分开并从每个列中创建一个xts对象,然后
cbind
将它们重新组合在一起。在我的代码中尝试这样做确实可以,但是现在我对为什么xts不能在不将所有列强制转换为因素的情况下更改类的情况感到困惑。对于这个问题的任何帮助或知识,将不胜感激。
指向post
的链接