对不起,我知道这个问题已经问过很多次了,但是在将数据帧转换为时间序列方面却遇到了问题。
这是我的数据框(删除一些列后):
head(New_DF):
ï..date qty
1 2017-07-05 61
2 2018-01-20 73
3 2017-07-10 145
4 2017-07-01 255
5 2017-05-23 267
6 2017-06-24 242
这就是我所做的:
library(zoo)
as.ts(read.zoo(New_Df, FUN = as.yearmon))
我得到这个错误:
Error in seq.default(head(tt, 1), tail(tt, 1), deltat) :
'from' must be a finite number
In addition: Warning message:
In zoo(rval3, ix) :
some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
我想我为什么,这是因为我的i..date列中有很多重复项,不幸的是,由于时间序列ML模型与其他常规ML模型有些不同,因此我不想删除它们。由于时间序列模型基于先前值的序列,因此删除Date可能会影响我的解决方案。
任何建议将不胜感激,谢谢。
答案 0 :(得分:0)
您能否分享一些有关数据的背景信息。另外,如果数据中有一些重复项,您可以将它们汇总一下,这样就不会发生上述错误。
答案 1 :(得分:0)
1)yearmon 假设New_DF
在注释的末尾可重复显示,请使用read.zoo
指定参数aggregate=sum
。
library(zoo)
read.zoo(New_DF, FUN = as.yearmon, aggregate = sum)
给予:
May 2017 Jun 2017 Jul 2017 Jan 2018
267 242 461 73
2)日期:如果要保留单个行,请使用Date
类而不是yearmon
(假设日期是唯一的)。
read.zoo(New_DF)
## 2017-05-23 2017-06-24 2017-07-01 2017-07-05 2017-07-10 2018-01-20
## 267 242 255 61 145 73
3)序列号另一种可能性是忽略日期并使用1、2,.3,..
zoo(New_DF$qty)
## 1 2 3 4 5 6
## 267 242 255 61 145 73
Lines <- " ï..date qty
1 2017-07-05 61
2 2018-01-20 73
3 2017-07-10 145
4 2017-07-01 255
5 2017-05-23 267
6 2017-06-24 242 "
New_DF <- read.table(text = Lines)