如何将带有YearMonth列的数据框转换为R中的时间序列

时间:2018-04-21 06:03:10

标签: r zoo

我有以下数据集,这是一个数据帧。但我想将其转换为时间序列,以便我可以进行ARIMA预测。 搜索了SO中的各种主题,但找不到与YEARMONTH谷物类似的任何东西。每个人都谈到了约会领域。但在这里,我没有约会。 我使用下面的代码,但这给出了错误

dataset <- data.frame(year =c(2017), YearMonth = c(201701,201702,201703,201704), sales = c(100,200,300,400))
library(zoo)
newdataset <- as.ts(read.zoo(dataset, FUN = as.yearmon))

# Error:
# 
#  In zoo(coredata(x), tt) :
#  some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique

我知道它会出错,因为我将第一列作为第一列没有唯一值,但不确定如何修复它。

任何帮助都会非常感激。

此致 阿卡什

1 个答案:

答案 0 :(得分:2)

一种选择是将YearMonth转换为一个月的第一个日期并生成ts

library(zoo)
dataset$YearMonth = as.Date(as.yearmon(as.character(dataset$YearMonth),"%Y%m"), frac = 0)
dataset
#   year  YearMonth sales
# 1 2017 2017-01-01   100
# 2 2017 2017-02-01   200
# 3 2017 2017-03-01   300
# 4 2017 2017-04-01   400

仅适用于ts另一个选项是:

dataset$YearMonth = as.yearmon(as.character(dataset$YearMonth),"%Y%m")

as.ts(dataset[-1])
# Time Series:
#   Start = 1 
# End = 4 
# Frequency = 1 
# YearMonth sales
# 1  2017.000   100
# 2  2017.083   200
# 3  2017.167   300
# 4  2017.250   400