如何在R中创建一个多变量“ts”对象?

时间:2017-04-22 20:49:28

标签: r dataframe time-series

我有两个不同时间序列的数据框。我可以使用以下命令单独创建ts对象:

数据框:

    Year Grocery_Stores Liquor
1 Feb-11         1953.8  216.8
2 Mar-11         2108.1  240.5
3 Apr-11         2062.3  244.4
4 May-11         2034.8  232.1
5 Jun-11         1988.6  223.6
6 Jul-11         2085.9  239.0

Ts_grocery <- ts(dataFeed$Grocery_Stores, frequency=12, start=c(2011,2))
Ts_Liquor <- ts(dataFeed$Liquor, frequency=12, start=c(2011,2))

我想将其绑定到我的VAR模型并为其创建一个多变量时间序列“ts”对象。我尝试了一些可能性,但它不起作用。我怎么能做一个“ts”对象? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

数据框到ts

如果问题是如何将datafeed转换为"ts"系列,那么:

ts(dataFeed[-1], start = c(2011, 2), freq = 12)

或将其读入动物园对象,然后使用"ts"将其转换为as.ts类(或根据您要执行的操作使用z)。 FUN = as.yearmon将索引转换为年/月,format说明符%b%y表示月份缩写和2位数年份。

library(zoo)

z <- read.zoo(dataFeed, FUN = as.yearmon, format = "%b-%y")
as.ts(z)

使用zoo的第二种方法具有从系列本身中删除起始值的优点。

绑定ts系列

如果问题是如何将两个"ts"系列绑定在一起,那么:

cbind(Ts_Liquor, Ts_grocery)

注意:可重复形式的输入是:

Lines <- "Year Grocery_Stores Liquor
1 Feb-11         1953.8  216.8
2 Mar-11         2108.1  240.5
3 Apr-11         2062.3  244.4
4 May-11         2034.8  232.1
5 Jun-11         1988.6  223.6
6 Jul-11         2085.9  239.0"

dataFeed <- read.table(text = Lines, as.is = TRUE)

答案 1 :(得分:1)

试试ts.union(Ts_grocery, Ts_Liquor)。这是你在google 时找到的第一个答案,你可以在r 中绑定几个时间序列,它似乎有效。