lets take this example:
test=c(1,5,NA,5,4,1,NA,3,3,5,4,2)
plot(test,type=\"l\")
This will plot test but will not connect the
Another way that preserves the missing value in the same spots
data=data.frame(x=1:12,y=test)
plot(data)
lines(data)
lines(na.omit(data),col=2)
Or in ggplot2
ggplot(data,aes(x,y))+geom_point()+geom_line(data=na.omit(data))
There isn't a way to ignore the missing values. You need to replace them with interpolated values.
# 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")
One options is:
plot(na.omit(test), type = "l")
If you want to retain the x-axis going from 1 - length(test)
then:
plot(na.omit(cbind(x = seq_along(test), y = test)), type = "l")
Either you have to ignore the NAs with the mentioned solutions using na.omit()
or you try to replace the NAs with reasonable values - you can use the package imputeTS for this.
You could e.g. interpolate:
library(imputeTS)
imp <- na.interpolation(test)
plot(imp, type="l")
You could take the mean as replacement:
library(imputeTS)
imp <- na.mean(test)
plot(imp, type="l")
You could also take the moving average as replacment:
library(imputeTS)
imp <- na.ma(test)
plot(imp, type="l")
In the end, it makes sense to use what is best for your use case. Oftentimes this will be 'ignoring' the NAs - since interpolation/imputation is only a estimation of the real values and also requires selecting the right method.