jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

R言語でデータのパーセンタイルを計算する

数値データの要約(summary関数)を使うと、R言語では簡単に4分位数(25%パーセンタイル、中央値、75%パーセンタイル)を計算できます。でも、いわゆるパーセンタイル値(100分位数)は簡単に計算できないようです。(関数を知らないだけかもしれないです)今回は、任意の長さのデータベクトルの各要素のパーセンタイル値を計算する方法を紹介します。

rank関数を利用する

ベクトルデータを引数にrank()をすると、各要素を昇順に並べた時の順位が計算されます。

#適当なベクトルデータ
vec <- c(86, 82, 98, 72, 42, 37, 35, 71, 27, 100)
rank(vec)

#[1]  8  7  9  6  4  3  2  5  1 10

あとは、これを少し変換するだけです。100分位数なので100をかけて、ベクトルの長さで割り算します。小数点以下ができたときのために、切り上げも利用しておきます。

vec.percentile <- ceiling((rank(vec)*100)/length(vec))