使用r中的ts()转换为时间序列

时间:2017-06-05 18:12:38

标签: r

下午好。

我有时间序列

v2<-c(12,13,15,17,18,12,11,12)

从1996年7月到1997年10月,即7月到10月之间的几个月

当我尝试使用

转换为时间序列时
v2.ts<-ts(v2, frequency=12, start=c(1996,7), end=c(1997,10))

它产生了我的结果

    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1996                        12  13  15  17  18  12

1997 11  12  12  13  15  17  18  12  11  12 

我可以使用哪些参数来制作它:

     Jul Aug Sep Oct 
1996  12  13  15  17

1997  18  12  11  12

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

ts系列必须有规律地间隔,但所显示的输出具有相隔一个月的点,除了第一年的10月和第二年的7月之间,所以它不是那种形式。

有几个包可以代表不规则间隔的系列。使用动物园包,就可以这样做:

library(zoo)

z <- as.zoo(v2.ts)
z[cycle(z) %in% 7:10]
## Jul 1996 Aug 1996 Sep 1996 Oct 1996 Jul 1997 Aug 1997 Sep 1997 Oct 1997 
##      12       13       15       17       18       12       11       12 

如果你不是在寻找一个时间序列,而只是一个带有指定元素的矩阵,那么:

tapply(c(v2.ts), list(floor(time(v2.ts)), cycle(v2.ts)), c)[, 7:10]

##       7  8  9 10
## 1996 12 13 15 17
## 1997 18 12 11 12