如何指定破碎的时间序列?

时间:2016-02-24 21:24:11

标签: r time-series zoo

我在11个月内从9次调查中收集了许多物种的调查数据。这些调查的期限从12月开始,到次年10月结束。 5月或6月没有任何物种的数据。以下是一个简化示例,尽管我的数据有很多丰富数据列。

日期

id         tag        xxx        position   score     
id_1       aaaaaaa    bbbbb      3190       1         
id_2       aaaaaaa    bbbbb      3199       1         
id_3       aaaaaaa    bbbbb      3300       1         
id_4       aaaaaaa    bbbbb      3350       1         
id_5       aaaaaaa    ccccc      100        1         
id_6       aaaaaaa    ccccc      500        1         
id_7       aaaaaaa    ccccc      550        1         
id_8       aaaaaaa    ccccc      599        1         

使用包裹动物园中的month <- c("Dec10", "Jan11", "Feb11", "Mar11", "Apr11", "Jul11", "Aug11", "Sep11", "Oct11") 进行编码

as.yearmon

一些假的丰富数据

require(zoo)
month <- as.yearmon(month, "%b%y")

所有人都加在一起

meanAbund <- rlnorm(9, 1, 1.2)
meanAbund2 <- meanAbund + 0.5  # to have two series at least

虽然我很欣赏这个时间序列不足以进行时间序列分析,但我想指出这些数据是一个(破碎的)时间序列对象,这样图形就会破坏序列而不是插入或忽略差距。该怎么做?

我怀疑这应该很容易,但我没有破解解决方案。我想要制作的东西可以在Shah,Zeileis和Grothendieck的quick reference guide的第4页看到动物园包,但我看不出他们的例子在代码中通知了他们的例子。

我可以把它读作时间序列对象

df <- cbind.data.frame(meanAbund, meanAbund2, month)

并绘制系列(从我的实际数据集到最多63个,尽管输出很难以考虑),

df.ts <- zoo(df[ , 1:2], df$month])

但该系列忽略了差距。

我应该如何指定图表或读入这些数据,以便绘制函数“知道”以打破系列?

1 个答案:

答案 0 :(得分:1)

zoo的第二个参数允许您的数据顺序。将为您缺少日期插入一个空白:

df
      Date Value
1 Jan 2005     1
2 Feb 2005     2
3 Mar 2005     3
5 May 2005     5
6 Jun 2005     6

创建动物园时间序列:

library(zoo)
df.ts <- zoo(df$Value, df$Date)

剧情

ts.plot(df.ts)

enter image description here

数据

df <- structure(list(Date = structure(c(2005, 2005.08333333333, 2005.16666666667, 
                                        2005.33333333333, 2005.41666666667), class = "yearmon"), Value = c(1L, 
                                                                                                           2L, 3L, 5L, 6L)), .Names = c("Date", "Value"), row.names = c("1", 
                                                                                                                                                                        "2", "3", "5", "6"), class = "data.frame")
df$Date <- as.yearmon(df$Date, "%b %Y")