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