创建一个时间序列对象

时间:2019-05-06 17:01:39

标签: r time-series

我在以下日期范围内遇到问题,我想将“ vendas”列传递给时间序列类型的对象。

head(base3)
# A tibble: 6 x 4
# Groups:   trimestre, ano [6]
  trimestre   ano Código.do.Produto vendas
      <int> <dbl> <fct>              <dbl>
1         3  2009 S3                  7300
2         1  2010 S3                  7900
3         2  2010 S3                 50700
4         3  2010 S3                 20900
5         2  2011 S3                 12000
6         3  2011 S3                  2300

我正在尝试:

baseaux<-base3%>%filter(ano==min(base3$ano))
ts<-ts(base3[,4],start=c(min(base3$ano),min(baseaux$trimestre)),frequency=4)

我得到这个:

  Qtr1   Qtr2   Qtr3   Qtr4
2009                 7300   7900
2010  50700  20900  12000   2300
2011  15000  35000  30000      0
2012  10300  35000  50000  60000
2013  90000 111400  80000  30900
2014  46400  21700  32300   2500
2015   1800   5000 300000  38000
2016  42000  68000  27900 229500
2017  12100 243000 180300 283000
2018 137000 

时间序列中的日期是在连续的时间基础上创建的。但是,我没有那样的数据帧数据。我该如何解决?

1 个答案:

答案 0 :(得分:0)

您的输出仅取决于对象print的{​​{1}}规范。实际上,您不必担心是否必须将ts对象放入data.frame中,因为实际上ts对象是一个向量。 ts对象只有在您指定了矩阵并且想要多个时间序列(例如每年一个)的情况下才是矩阵。上面的代码对我来说效果很好:

ts

此代码只是向您显示df <- data.frame(trimestre = c(3, 1, 2, 3), ano = c(2009, 2010, 2010, 2010), Código.do.Produto = "S3", vendas = c(7300, 7900, 50700, 20900)) baseaux <- df %>% filter(ano==min(ano)) ts <- ts(df[,4],start=c(min(df$ano),min(baseaux$trimestre)), frequency=4) df$ts <- ts 是如何创建的,请参见ts的结果,并看到str的默认选项为print,其中导致您认为输出是一个矩阵,但是如果您使用othe选项查看ts,则不是。

calendar=T

我希望它将对您有所帮助。