R でベクトルのモードを見つける

胡金庫 2023年1月30日
  1. カスタム関数を使用して R ベクトルのモードを見つける
  2. map_dbl を使用して、R の各データフレーム列に FindMode 関数を適用する
R でベクトルのモードを見つける

この記事では、R でベクトルの最頻値を求める方法のいくつかの方法について説明します。

カスタム関数を使用して R ベクトルのモードを見つける

モードは、一連の値の最大発生値を示す最も基本的な統計概念の 1つです。その結果、数値や文字ベースなど、さまざまなデータ型で観察できます。R 言語にはモードを計算するための組み込み関数はありませんが、uniquewhich.maxtabulate、および match の関数を使用して実装できます。x として示される 1つの引数を取る FindMode という名前の関数を定義します。最初に、unique 関数が x で呼び出され、別のオブジェクトに格納されます。unique は、セットから重複しない値を抽出します。最初の引数として、ベクトルオブジェクト、データフレーム、または配列を使用できます。

次に、2つのベクトルを受け取り、それらから位置一致のベクトルを返す match で始まる複数の連鎖関数があります。tabulate 関数は、各整数がベクトルに現れる回数をカウントして返します。返されるベクトルには、引数ベクトルの最大整数以下のすべての整数のカウントが含まれていることに注意してください。最後に、which.max 関数は整数ベクトルの最大要素のインデックスを見つけます。apply 関数を使用して、データフレームのすべての列で FindMode 関数を呼び出すことができます。この場合、データフレームとして格納された単純な整数ベクトルを宣言し、apply 関数に渡して平均を計算します。

library(purrr)

FindMode <- function(x) {
  u <- unique(x)
  u[which.max(tabulate(match(x, u)))]
}

x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
apply(df, 2, FindMode)

出力:

x
3

または、データフレームで FindMode 関数を直接呼び出すこともできます。次のサンプルコードは、datasets パッケージに含まれている cars データセットでの使用法を示しています。

library(purrr)

FindMode <- function(x) {
  u <- unique(x)
  u[which.max(tabulate(match(x, u)))]
}

apply(cars, 2, FindMode)

出力:

speed  dist
   20    26

map_dbl を使用して、R の各データフレーム列に FindMode 関数を適用する

指定されたデータフレームの各列の平均を見つけるためのもう 1つの便利な関数は、tidyverse に含まれる purrr パッケージの一部である map_dbl です。これらのメソッドは、ベクターオブジェクトでは呼び出されないことに注意してください。

library(purrr)

FindMode <- function(x) {
  u <- unique(x)
  u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)

map_dbl(df, FindMode)
map_dbl(cars, FindMode)

出力:

x
3
speed  dist
   20    26
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook