数値列のパーセンタイル上位5%を超える値を上位5%の時の値に、下位5%以下の値を下位5%の時の値に置き換えたい

例えば、売上の上位5%以上の値を上位5%の時の値に、下位5%以下の値を下位5%の時の値に置き換えたいとします。

image

列ヘッダメニューから「値を置き換える」の「条件を指定」を選択します。

image

条件をクリックします。

image

条件に「カスタム」を選択して下記の条件式を入力します。

売上 >= quantile(売上, probs=0.95)

quantile関数を使うことで、probsで指定したパーセンタイルの値が求められます。
ここでは95パーセンタイルの値を求めています。

image

新しい値には、95パーセンタイルの時の値を返したいため、下記の式を入力します。

quantile(売上, probs=0.95)

image

新しく条件式を追加したいため、プラスボタンをクリックします。

image

新しい条件をクリックして、条件に「カスタム」を選択して下記の条件式を入力します。

売上 <= quantile(売上, probs=0.05)

image

新しい値には、5パーセンタイルの時の値を返したいため、下記の式を入力します。

quantile(売上, probs=0.05)

image

それ以外の場合には、そのままの列の値を返したいため、売上を指定します。

image

実行することで、売上の上位5%以上の値を上位5%の時の値に、下位5%以下の値を下位5%の時の値に置き換えることができました。

image

「いいね!」 2

こちらに関しては、‘Winsonize’ という手法を使って行うこともできます。

こちらの方に、winsorという関数をRスクリプトで作り、その後その関数を使う方法を書いたノートがあるので、参考にしてみて下さい。

西田