Rで解析:matrix操作が面白い!「matrixStats」パッケージの紹介

Rの解析に役に立つ記事
スポンサーリンク

matrixを簡単に操作できる「matrixStats」パッケージの中から使用頻度が高そうなコマンドを紹介します。matrixの操作は基本コマンドで十分できますが、慣れるまでは本パッケージを利用しながら使い方を学ぶのもありかと思います。

また、「matrixStats」パッケージは多くのコマンドが収録されていますので、気になる方はヘルプを参照ください。

パッケージバージョンは0.14.1です。
コマンドはR version 3.2.0で確認しています。


スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

[code language=”R”]
#パッケージのインストール
install.packages(“matrixStats”, type = “source”)
[/code]


データ例の作成

下記コマンドを実行してください。

[code language=”R”]
#100*100のデータを作成
set.seed(1234)
TMatrix

実行コマンドの紹介

詳細はコメントを確認してください。

[code language=”R”]
#パッケージの読み込み
library(“matrixStats”)

###データに欠損値があるか確認:anyMissing, colAnyMissings, rowAnyMissingsコマンド###
#データ全体を確認
anyMissing(TMatrix)
[1] TRUE

#行を確認
colAnyMissings(TMatrix)
[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE
#FALSE:4行目を確認
TMatrix[, 4]
[1] 137 80 92 153 55 228 61 78 298 243
#TRUE:1行目を確認
TMatrix[, 1]
[1] NA 187 183 188 NA 193 3 NA 200 155

#列を確認
rowAnyMissings(TMatrix)
[1] TRUE TRUE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
#FALSE:3列目を確認
TMatrix[3,]
[1] 183 85 48 92 94 216 96 5 43 41
#TRUE:1列目を確認
TMatrix[1,]
[1] NA 209 95 137 167 23 260 37 278 50
######

###配列から斜めにデータを取得:rowCollapse, colCollapseコマンド
#行方向に斜め
rowCollapse(TMatrix, 2:4)
[1] 209 NA 92 278 66 228 86 275 298 NA
TMatrix[, 2:4]
  [,1] [,2] [,3]
[1,] 209 95 137
[2,] 164 NA 80
[3,] 85 48 92
[4,] 278 12 153
[5,] 88 66 55
[6,] NA 244 228
[7,] 86 158 61
[8,] 81 275 78
[9,] 57 250 298
[10,] NA NA 243

#列方向に斜め
colCollapse(TMatrix, 2:4)
[1] 187 85 12 80 94 152 13 5 164 271
TMatrix[2:4,]
  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 187 164 NA 80 194 93 13 268 142 271
[2,] 183 85 48 92 94 216 96 5 43 41
[3,] 188 278 12 153 187 152 5 235 164 40
######

###指定した値の個数を検出:colCounts, rowCountsコマンド
#共通のオプション:value = 指定した値, na.rm = TRUE
#各行を確認
colCounts(TMatrix, value = NA, na.rm = TRUE)
[1] 3 2 2 0 0 0 0 0 1 2
#各行を確認
rowCounts(TMatrix, value = NA, na.rm = TRUE)
[1] 1 1 0 0 1 2 1 1 1 2
######

###各行,列の総和,減算,最大値を計算
#総和,NA値の場所で計算が止まります
#列方向に積算
colCumsums(TMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA 209 95 137 167 23 260 37 278 50
[2,] NA 373 NA 217 361 116 273 305 420 321
省略
[9,] NA NA NA 1182 1316 1110 920 963 NA NA
[10,] NA NA NA 1425 1546 1365 1090 1164 NA NA
#行方向に積算
rowCumsums(TMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA NA NA NA NA NA NA NA NA NA
[2,] 187 351 NA NA NA NA NA NA NA NA
省略
[9,] 200 257 507 805 879 932 948 1045 NA NA
[10,] 155 NA NA NA NA NA NA NA NA NA

#減算,NA値の場所で計算が止まります
#列方向に減算
colCummins(TMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA 209 95 137 167 23 260 37 278 50
[2,] NA 164 NA 80 167 23 13 37 142 50
省略
[9,] NA NA NA 55 74 23 5 5 NA NA
[10,] NA NA NA 55 74 23 5 5 NA NA
#行方向に減算
rowCummins(TMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA NA NA NA NA NA NA NA NA NA
[2,] 187 164 NA NA NA NA NA NA NA NA
省略
[9,] 200 57 57 57 57 53 16 16 NA NA
[10,] 155 NA NA NA NA NA NA NA NA NA

#最大値,NA値の場所で計算が止まります
#列方向に最大値
colCummaxs(TMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA 209 95 137 167 23 260 37 278 50
[2,] NA 209 NA 137 194 93 260 268 278 271
省略
[9,] NA NA NA 298 204 226 260 268 NA NA
[10,] NA NA NA 298 230 255 260 268 NA NA
#行方向に最大値
rowCummaxs(TMatrix)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] NA NA NA NA NA NA NA NA NA NA
[2,] 187 187 NA NA NA NA NA NA NA NA
省略
[9,] 200 200 250 298 298 298 298 298 NA NA
[10,] 155 NA NA NA NA NA NA NA NA NA
######

###差分を計算:Diffsコマンド
#最大値,NA値の場所で計算が止まります
#列方向に差分
colDiffs(TMatrix, lag = 1L, differences = 1L)
#行方向に差分
rowDiffs(TMatrix, lag = 1L, differences = 1L)
######

###中央値を検出:Mediansコマンド
#各行
colMedians(TMatrix, na.rm = TRUE)
[1] 187.0 87.0 126.5 114.5 159.0 150.5 94.5 106.5 142.0 45.5
#各列
rowMedians(TMatrix, na.rm = TRUE)
[1] 137.0 164.0 88.5 158.5 59.0 202.5 116.0 94.0 93.0 226.5
[/code]


少しでも、あなたのウェブや実験の解析が楽になりますように!!

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