この例を見てみましょう:
test=c(1,5,NA,5,4,1,NA,3,3,5,4,2)
plot(test,type="l")
これはテストをプロットしますが、ドットを接続しません。NAを無視してドットを接続し、きれいなグラフを取得する方法はありますか?
1つのオプションは次のとおりです。
plot(na.omit(test), type = "l")
1からのx軸を保持したい場合は、次のようにしますlength(test)
。
plot(na.omit(cbind(x = seq_along(test), y = test)), type = "l")
欠落している値を無視する方法はありません。それらを補間値に置き換える必要があります。
# 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")
同じ場所で不足している値を保持する別の方法
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))
を使用して、前述のソリューションでNAを無視するかna.omit()
、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を「無視」します。補間/代入は実際の値の推定にすぎず、適切な方法を選択する必要があるためです。