[R言語]配列の列ごとの中央値を取得するには?

R言語

どうも、ちょげ(@chogetarou)です。

配列(array)の列ごとの中央値を取得する方法を紹介します。

スポンサーリンク

方法

配列(array)の列ごとの中央値を取得する方法は、2つあります。

apply()

ひとつは、apply()を使う方法です。

まず、apply()を呼び出します。

そして、apply()の第1引数に配列(array)、第2引数に「2」、第3引数に「median」を指定します。

#arr=対象の配列
result <- apply(arr, 2, median)

上記のapply()は、配列(array)の列ごとの中央値を取得します。

使用例

nums <- array(c(99, -2, 91, 86, 88, 95,
                 33, 28, 31, 0, 39, 34,
                 30, 28, 24, 24, -5, 28,
                 1, 4, 11, 0, 2, -10), dim=c(4, 6))

result <- apply(nums, 2, median)

nums
cat("中央値:", result)
出力:
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   99   88   31   30   -5   11
[2,]   -2   95    0   28   28    0
[3,]   91   33   39   24    1    2
[4,]   86   28   34   24    4  -10
中央値: 88.5 60.5 32.5 26 2.5 1

colMedians()

もうひとつは、colMedians()を使う方法です。

まず、colMedians()を呼び出します。

そして、colMedians()の引数に配列(array)を指定します。

#arr=対象の配列
result <- colMedians(arr)

上記のcolMedians()は、配列(array)の列ごとの中央値を取得します。

colMedians()を使用するには、matrixStateをインストールする必要があります。

NAを無視して平均値を取得したい場合は、na.rmに「TRUE」を指定します。

#NAを無視
result <- colMedians(arr, na.rm=TRUE)

使用例

library(matrixStats)
nums <- array(c(99, -2, 91, 86, 88, 95,
                33, 28, 31, 0, 39, 34,
                30, 28, 24, 24, -5, 28,
                1, 4, 11, 0, 2, -10), dim=c(4, 6))

result <- colMedians(nums, na.rm=TRUE)

nums
cat("中央値:", result)
出力:
> nums
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   99   88   31   30   -5   11
[2,]   -2   95    0   28   28    0
[3,]   91   33   39   24    1    2
[4,]   86   28   34   24    4  -10

> cat("中央値:", result)
中央値: 88.5 60.5 32.5 26 2.5 1

まとめ

配列(array)の列ごとの中央値を取得する方法は、次の2つです。

  • apply()を使う方法
    result <- apply(arr, 2, median)
  • rowMedians()を使う方法
    result <- colMedians(arr)

コメント

タイトルとURLをコピーしました