绘制时间TS并省略NA数据

时间:2011-02-24 12:37:25

标签: r time-series

我正在尝试绘制一些在其中存在一些差距的时态数据。你可以在这里看到情节:http://www.tiikoni.com/tis/view/?id=da222e2 问题是在TS中的间隙期间,线图在间隙上进行插值,我不希望它。我尝试用NA标志交错间隙,但是有大约10000个数据点从多个文件中排序,这使得很难手动添加NA标志。如果无法定义绘图的行为(0函数,是否有我可以使用的另一个绘图,例如动物园,这将允许我不在间隙之间绘制线条?

3 个答案:

答案 0 :(得分:3)

一旦您知道时间序列的顺序,使用合并将间隙与NA交错并不困难。一点点演示:

X <- c(1:20,41:100)
Y <- rnorm(80)

plot(X,Y,type="l")    

Z <- seq(min(X),max(X),by=1)    # I take 1 is the period.
newData <- merge(data.frame(X,Y),data.frame(X=Z),all=T)
plot(newData,type="l")

答案 1 :(得分:2)

创建一个有间隙的动物园系列。然后定义g,其中包括z的时间点加上缺失的点。创建零宽度动物园系列以与z合并并绘制。

library(zoo)
z <- zoo(rnorm(12), c(1:6, 11:16)) # test data

g <- seq(start(z), end(z), 1)
zz <- merge(z, zoo(, g))
plot(zz)

答案 2 :(得分:1)

感谢所有为我的查询做出贡献的人。

我还将这个问题发布到R-help邮件列表中,并且从那里我得到了一个程序,该程序用于填充带有NA标志的缺失数据点。问题是时间戳是不规则的间隔,但仍然在一定的阈值内。

出于后人的目的,这是Duncan Murdoch提出的建议:

  

任何软件都会遇到同样的问题:你是怎么回事?   定义差距?如果定义像“时间”那样简单   差异大于X“,那么它将相当容易:使用diff()   找出排序时间和地点的所有时间差异   那些超过X,插入一个NA值的新数据点。对于   例如:

t <- c(1,2,3,7,8,9,11,12,13)
x <- rnorm(length(T))
d <- diff(t)
gap <- which(d > 1.5)
if (length(gap)) {
   newT <- (t[gap] + t[gap+1])/2
   t <- c(t, newT)
   x <- c(x, rep(NA, length(newT)))
   o <- order(t)
   t <- t[o]
   x <- x[o]
}
plot(t, x, type='l')