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


投稿日: Rの解析に役に立つ記事

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

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

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


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

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

#パッケージのインストール
install.packages("matrixStats", type = "source")

データ例の作成

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

#100*100のデータを作成
set.seed(1234)
TMatrix <- matrix(sample(1:300, 100, replace = TRUE),
                  nrow = 10, ncol = 10)
#2の倍数をNAで置換
TMatrix[which(TMatrix %% 7 == 0)] <- NA

#行名と列名を付与
colnames(TEST) <- c(LETTERS, c(t(outer(LETTERS, LETTERS, paste0, sep = ""))))[1:10]
rownames(TEST) <- paste0("DATA", 1:10)

実行コマンドの紹介

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

#パッケージの読み込み
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

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

スポンサードリンク

おすすめコンテンツ


スポンサードリンク