数値データを扱うとき、外れ値の値を一つにまとめたり、マイナスの値を0として扱うなど一定の数値以上・以下の値をまとめることがあります。
今回は、その処理をRで実施するためのpmax,pmin関数を使った例を紹介します。
例:pmaxを使ってマイナスを0とする
pmaxはベクトルのそれぞれの値と、指定した値とを比較し、それぞれの最大値をベクトルとして返す関数です。
pmax(データ,基準値)
と書くと、データと基準値を比較して大きい方を採用します。
次のサンプルデータでマイナスの値はすべて0に変換してみましょう。
1 |
data <- c(-5,3,-2,12,0,25,4) |
pmax(data,0)とすることで、dataのそれぞれの値と0を比較して、大きい方を採用するため、0より小さい値は0になります。
1 2 |
pmax(data,0) [1] 0 3 0 12 0 25 4 |
マイナスのもの(-5と-2)が0になっていますね。
例:pminを使って10以上の値を10にする
pminはベクトルのそれぞれの値と、指定した値とを比較し、それぞれの最小値をベクトルとして返す関数です。
pmin(データ,基準値)
と書くと、データと基準値を比較して小さい方を採用します。
先ほどと同じサンプルデータで10以上の値を10に変換してみましょう。
1 |
data <- c(-5,3,-2,12,0,25,4) |
pmin(data,10)とすることで、dataのそれぞれの値と10を比較して、小さい方を採用するため、10より大きい値は10になります。
1 2 |
pmin(data,10) [1] -5 3 -2 10 0 10 4 |
10より大きい値(12と25)が10になっていることが分かります。
NAを含む場合の対応
データの中に「NA」がある場合、pmax,pminともにrm.naオプションを付けることでNAをそのまま残したり、基準値に変換したりすることができます。
rm.na=FALSE…NAのまま(デフォルト)
rm.na=TRUE…NAを基準値に変換
今回使ったサンプルデータにNAを追加して確認してみましょう。
1 |
data <- c(-5,3,-2,12,0,25,4,NA) |
rm.naのオプションをFALSEにした場合とTRUEにした場合の結果を見てみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# pmax pmax(data,0,na.rm=FALSE) [1] 0 3 0 12 0 25 4 NA pmax(data,0,na.rm=TRUE) [1] 0 3 0 12 0 25 4 0 # pmin pmin(data,10,na.rm=FALSE) [1] -5 3 -2 10 0 10 4 NA pmin(data,10,na.rm=TRUE) [1] -5 3 -2 10 0 10 4 10 |
FALSEの場合はNA、TRUEの場合は基準値の値が出力されています。
コメント