如何连接缺少值的点?

时间:2013-03-20 19:43:58

标签: r plot

让我们举个例子:

       test=c(1,5,NA,5,4,1,NA,3,3,5,4,2)

      plot(test,type="l")

这将绘制测试,但不会连接点。有没有办法我们可以忽略NA并连接点,这样我们得到漂亮的图形?

4 个答案:

答案 0 :(得分:9)

一个选项是:

plot(na.omit(test), type = "l")

如果你想保持x轴从1 - length(test),那么:

plot(na.omit(cbind(x = seq_along(test), y = test)), type = "l")

答案 1 :(得分:9)

没有办法忽略缺失的值。您需要用插值替换它们。

# using base packages only
plot(approx(test, xout=seq_along(test))$y, type="l")
# or, using zoo
library(zoo)
plot(na.approx(test), type="l")

答案 2 :(得分:5)

另一种在相同位置保留缺失值的方法

data=data.frame(x=1:12,y=test)
plot(data)
lines(data)
lines(na.omit(data),col=2)

或者在ggplot2

ggplot(data,aes(x,y))+geom_point()+geom_line(data=na.omit(data))

答案 3 :(得分:0)

您必须使用na.omit()来忽略上述解决方案中的NA,或者尝试用合理的值替换NA-您可以为此使用imputeTS软件包。

您可以例如插值:

library(imputeTS)
imp <- na.interpolation(test)
plot(imp, type="l")

您可以用平均值代替:

library(imputeTS)
imp <- na.mean(test)
plot(imp, type="l")

您也可以将移动平均线作为替换:

library(imputeTS)
imp <- na.ma(test)
plot(imp, type="l")

最后,有意义的是使用最适合您的用例的东西。通常,这将“忽略” NA,因为内插/输入只是对实际值的估计,还需要选择正确的方法。