我正在尝试绘制一些时间数据,这些数据中有一些间隙。你可以在这里看到这个图:http://www.tiikoni.com/tis/view/?id=da222e2。
问题是,在TS中的时间间隔期间,线状图被插入到间隔上,而我不希望它这样。我试过用安娜标志交错填充空隙,但有大约10000个数据点是从多个文件中排序的,这使得手动添加NA标志变得困难。如果不能定义图的行为(0函数,是否有其他图可以使用,例如动物园),它将允许我不在间隙之间画线?
发布于 2011-02-24 21:26:21
一旦知道了时间序列的顺序,使用merge就不难与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")发布于 2011-02-24 21:30:20
创建一个有间隙的动物园系列。然后定义g,它包括z的时间点加上缺失点。创建一个零宽度的zoo系列以与z和plot合并。
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)发布于 2011-02-26 00:29:26
感谢所有为我的查询做出贡献的人。
我还把这个问题贴到了R-help邮件列表中,从那里我得到了一个用安娜标志填充缺失数据点的过程。问题是,时间戳的间距是不规则的,但仍然在一定的阈值内。
为了子孙后代,这是邓肯·默多克的建议:
任何软件都会有和你一样的问题:你如何定义差距?如果定义很简单,比如“时间差大于X",那么就相当简单了:使用diff()找出排序时间中的所有时间差,并在这些时间差超过X的地方插入一个具有安娜值的新数据点。例如:
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')https://stackoverflow.com/questions/5104766
复制相似问题