1

欠損値を含むテーブルがあり、欠損値を最も近い 2 つのゼロ以外の値に基づく計算に置き換える関数を作成しようとしています。

例:

X  Tom    
1  4.3    
2  5.1    
3  NA    
4  NA    
5  7.4

についてX = 3は、Tom = 5.1 + (7.4-5.1)/2

についてX = 4は、 Tom = (5.1 + (7.4-5.1)/2) + (7.4-5.1)/2

この機能はすでに存在しますか?そうでない場合は、アドバイスをいただければ幸いです。

4

3 に答える 3

1

実際、imputeTSパッケージ (私はメンテナーです) は、これに対する優れたソリューションを提供します。

移動平均線への置き換え

 na_ma(x, k = 2)

x は入力オブジェクトです k は移動平均ウィンドウです

k of 1 は前後の値のみを考慮することを意味し、k of 2 は前後の 2 つの値を考慮することを意味します。

この関数は、おそらく必要な計算に最も近いものです。唯一の違いは、imputeTS メソッドが NA 値を飛び越えないことです。(スレッド スターターの要求に応じて)

しかし、特に長い NA ストリークの場合、これは完全に理にかなっています。1, 2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 14, 15, 16 (2 と 14 の平均を 3 位の NA に取るのは得策ではありません) )

さらにLast Observation Forward (コメントで 42 が述べたように)

imputeTS::na_locf(x)

または補間(G.グロタンディークも言及)

imputeTS::na_interpolation(x)

また、同じ方向に少し進むデータ置換オプションもありません。興味のある方は、R Journalの imputeTS パッケージの紹介をご覧ください。

于 2017-04-18T23:20:07.393 に答える