R では、mean()
と はmedian()
期待どおりの動作をする標準関数です。mode()
は、引数内で最も多く出現する値ではなく、オブジェクトの内部ストレージ モードを示します。しかし、ベクトル (またはリスト) の統計モードを実装する標準ライブラリ関数はあるのでしょうか?
ベストアンサー1
数値データと文字/因子データの両方に機能するもう 1 つのソリューション:
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
私のちっぽけな小さなマシンでは、約 0.5 秒で 10M 整数ベクトルのモードを生成して見つけることができます。
データ セットに複数のモードがある可能性がある場合、上記のソリューションは と同じアプローチを採用しwhich.max
、モード セットの最初の値を返します。すべてのモードを返すには、次のバリアントを使用します (コメントの @digEmAll より)。
Modes <- function(x) {
ux <- unique(x)
tab <- tabulate(match(x, ux))
ux[tab == max(tab)]
}