【问题标题】:Line plot in r ignoring missing datar中的线图忽略缺失数据
【发布时间】:2011-02-07 15:13:35
【问题描述】:

我有一个数据集,其中缺失的数据表示为-999。数据从 0 到 1。 我想将数据绘制为线图,但我不希望有效数字连接到丢失的数据。例如,如果我有

x = c(0.29, 0.3, -999, 0.31, 0.4)

我希望这条线从 0.29 变为 0.3,在丢失的数据处中断,然后在 0.31、0.4 之间重新开始。

假设上述数据在文件 x.txt 中,我尝试执行以下操作:

x1 = read.table('x.txt', na.strings=c("-999."))
plot(x1, type='l')

但它没有做我想要的。

【问题讨论】:

    标签: r plot


    【解决方案1】:

    -999 替换为NA

    is.na(x) <- (x == -999)
    plot(x, type="l")
    

    这是你想要的吗?

    【讨论】:

      【解决方案2】:

      -999 更改为NA 的另一种方法是:

      x[x==-999] = NA
      plot(x, type="l")
      

      这给出了与@Joshua 的好答案相同的结果,但如果您是 R 新手,可能会更清楚。

      【讨论】:

      • 好点。我使用 is.na 是因为 ?NA 说:“函数‘is.na
      • 从现在开始我肯定会使用你提供的方法——但如果你是 R 新手,它有点不透明 ;)
      【解决方案3】:

      你没有说它做了什么以及它与你想要的不匹配。

      您可能遇到的一个问题是 read.table 返回一个数据框,因此在您的代码中它试图绘制数据框,而不是数据框中的 x 列。会发生什么取决于您的数据框最终有多少列(我们无法从您的示例中猜到)。

      如果恰好有 2 列,则创建常规散点图(但选项可能无法正确通过)。如果 x1 只有一列,则会创建一个带状图,这与将单个向量提供给 plot.default 命令时创建的散点图完全不同。

      也许

      plot( x1[[1]], type='l' ) 
      

      或者类似的东西就是你想要的。

      如果没有,请向我们展示您的数据框在阅读后的样子:

      summary(x1)
      str(x1)
      

      【讨论】:

      • “你没有说它做了什么以及它与你想要的不匹配。”抱歉没有更清楚。这条线所做的是从 0.29 到 0.3 到 -999,而不是按我的意愿被打断。
      猜你喜欢
      • 1970-01-01
      • 2013-01-02
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      相关资源
      最近更新 更多