【问题标题】:Plotting temporal TS and omitting NA data绘制时间 TS 并省略 NA 数据
【发布时间】:2011-02-24 12:37:25
【问题描述】:

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

【问题讨论】:

  • 一些示例代码会很有用...
  • 你是对的,joris。我没有包含它的原因是因为我认为它可能是我缺少的绘图函数中的一个参数。

标签: r time-series


【解决方案1】:

一旦您知道时间序列的顺序,使用合并将间隙与 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")

【讨论】:

    【解决方案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)
    

    【讨论】:

      【解决方案3】:

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

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

      出于后代目的,这是邓肯默多克的建议:

      任何软件都会遇到与您相同的问题:您如何 定义一个差距?如果定义很简单,比如“时间 差异大于 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')
      

      【讨论】:

        猜你喜欢
        • 2021-05-08
        • 2012-12-08
        • 1970-01-01
        • 2015-07-07
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        相关资源
        最近更新 更多