从CSV文件创建ts R对象,其中日期为具有多变量系列的列

时间:2017-03-29 20:28:02

标签: r dataframe

我有一个格式为

的CSV文件
ref_date;wings;airfoil;turbines
2015-03-31;123,22;22,77;99,0
2015-04-30;123,22;28,77;99,0
2015-05-31;123,22;22,177;02,0
2015-06-30;56,288;22,77;99,0

我希望使用forecast包来预测此时间序列的下一个值。 forecast包只接受ts对象,但到目前为止,我创建一个对象的尝试都失败了。我试着

1)使用zoo包

df = read.zoo(data_file, sep=';', dec=',', format="%Y-%m-%d", header=T)

但数据在小数点处被截断。

2)使用带xts的zoo包

df = read.zoo(datafile, sep=';', dec=',', format="%Y-%m-%d", header=T)
df_ts = ts(df)

日期无处可见,索引只是一系列数字,如

1 123.22 22.77 99

3)使用read.csv和ts

df = read.zoo(datafile, sep=';', dec=',', format="%Y-%m-%d", header=T)
df_ts = ts(df)

4)尝试使用xts

df = read.csv(data_file, sep=';', header=T, dec=',')
tt = as.xts(df[,-1],order.by = as.Date(as.character(df[,1]), format = "%Y-%m-%d"))
forecast(tt) 
Error in `tsp<-`(`*tmp*`, value = tsp.y) : 
  invalid time series parameters specified

结果会丢失有关日期的所有信息,包括ref_date列,现在预测包会产生无意义的结果。

创建forecast库正在等待的对象的正确方法是什么,可以生成预测,维护日期,包括在图中?

1 个答案:

答案 0 :(得分:1)

我一直在将CSV数据摔跤到ZOO / XTS对象中并同情 - 痛苦。

建议在as_xts()

中使用tidyquant
as_xts(read_csv(file),ref_date)

您可能需要将coredata()对象中生成的XTS强制转换为数字。