如何将不同的组转换为时间序列

时间:2018-06-21 13:39:56

标签: r time-series

我正在处理时间序列问题。这是我的数据的一部分:

head(Dataset)
Project    Date             Budget
  PR1      September 2015     0.2
  PR1      October 2015       0.5
  PR1      November 2015      0.9
  PR1      December 2015      1.2
  PR1      January 2016       1.8
  PR2      August 2015        1.5
  PR2      September 2015     1.9
  PR2      October 2015       2.3
  PR2      December 2015      2.5 
  PR2      January 2016       2.8

我有每个项目和每个月预算的演变,我想将每个项目的预算演变成时间序列,以便进行分类。 我怎样才能做到这一点 ?

非常感谢

1 个答案:

答案 0 :(得分:1)

这会将末尾“注释”中的输入转换为多元时间序列z。

library(zoo)

z <- read.zoo(DF, index = "Date", FUN = as.yearmon, format = "%B %Y", 
       split = "Project")

给予这个动物园对象:

> z

         PR1 PR2
Aug 2015  NA 1.5
Sep 2015 0.2 1.9
Oct 2015 0.5 2.3
Nov 2015 0.9  NA
Dec 2015 1.2 2.5
Jan 2016 1.8 2.8

as.ts(z)可用于获取ts对象。

宽格式

这不是时间序列对象,但是如果您想要一个带有顶部/年份/月份的宽格式对象,则:

library(zoo)

DF0 <- transform(DF, Date = format(as.yearmon(Date, "%B %Y"), "%Y-%m"))
xtabs(Budget ~ Project + Date, DF0)

提供此xtabs表:

       Date
Project 2015-08 2015-09 2015-10 2015-11 2015-12 2016-01
    PR1     0.0     0.2     0.5     0.9     1.2     1.8
    PR2     1.5     1.9     2.3     0.0     2.5     2.8

注意

Lines <- "Project,Date,Budget
PR1,September 2015,0.2
PR1,October 2015,0.5
PR1,November 2015,0.9
PR1,December 2015,1.2
PR1,January 2016,1.8
PR2,August 2015,1.5
PR2,September 2015,1.9
PR2,October 2015,2.3
PR2,December 2015,2.5 
PR2,January 2016,2.8"
DF <- read.csv(text = Lines, strip.white = TRUE)