如何将数据帧转换为R中的时间序列?

时间:2016-01-05 15:54:15

标签: r dataframe time-series

我有一个名为data的矩阵,其中包含以下数据:

     set.seed(8000)
     data <- matrix(sample(20,60,T),5)
     data
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]   19    9    6    8    7    2    2   10    3     1     6    13
[2,]    7   15    6   19    5    6   17    4   18    17     1     6
[3,]    4    9    8    6   13   16   17    7   13     8    15    18
[4,]   14   15    5    4   19   13   16    6   16    19    11     6
[5,]    5    8    5    3    7   18   12   13   11     8    14    14

我想将此存储为ts对象,其中列为1月至12月的月份,行数为1991-1995。

data
      Jan  Feb   Mar Apr  May  Jun July  Aug  Sep   Oct   Nov   Dec
1991   19    9    6    8    7    2    2   10    3     1     6    13
1992    7   15    6   19    5    6   17    4   18    17     1     6
1993    4    9    8    6   13   16   17    7   13     8    15    18
1994   14   15    5    4   19   13   16    6   16    19    11     6
1995    5    8    5    3    7   18   12   13   11     8    14    14

基本上,如果我的数据以行数和月数作为列存储,那么如何将其存储为时间序列对象?我试过了:

data <- ts(data,freq=12,start=c(1991,1))

但是,这似乎不起作用,因为我以后无法绘制数据。 这是我收到的错误:

error: cannot plot more than 10 series as "multiple".

任何建议都将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

data <- sample(20,60,T)
data <- ts(data,freq=12,start=c(1991,1))

答案 1 :(得分:1)

提示:请包含您收到的警告/错误消息,以澄清您的意思&#34;似乎不起作用&#34;。你的例子很好,可以重复,我得到了错误:不能超过10个系列作为&#34;多个&#34;。您的问题是将数据保持为矩阵。将以上代码行替换为:

data <- ts(as.vector(t(data)),freq=12,start=c(1991,1))

转换(以行方式向量化),然后在传递给ts()之前转换为单个向量。