どうも、ちょげ(@chogetarou)です。
配列(array)の中央値を取得する方法を紹介します。
方法

配列(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)の列ごとの中央値を取得します。
使用例
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)の行ごとの中央値を取得します。
使用例
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)
コメント