[R言語]配列(array)の中央値を取得するには?

R言語

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

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

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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

行列全体の中央値

1つ目は、配列全体の中央値を取得する方法です。

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

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

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

上記のmedian()は、配列(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 <- median(nums)

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

中央値: 28

列ごとの中央値

2つ目は、列ごとの中央値を取得する方法です。

配列(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

行ごとの中央値

3つ目は、行ごとの中央値を取得する方法です。

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

apply()

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

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

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

#arr=対象の配列
result <- apply(arr, 1, 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, 1, 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

中央値: 30.5 14 28.5 26

rowMedians()

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

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

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

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

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

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

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

#NAを無視
result <- rowMedians(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 <- rowMedians(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)
中央値: 30.5 14 28.5 26

まとめ

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

  • 配列全体の中央値を取得する方法
    result <- median(arr)
  • 列ごとの中央値を取得する方法
    • result <- apply(arr, 2, median)
    • result <- colMedians(arr)
  • 行ごとの中央値を取得する方法
    • result <- apply(arr, 1, median)
    • result <- rowMedians(arr)

コメント

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