Rで解析:行名・列名の操作がラクラクです「colr」パッケージ

Rの解析に役に立つ記事

データ解析時に意外と面倒な行名・列名の操作がラクラクなパッケージの紹介です。文字列操作は正規表現を知っていると作業効率の改善になると考えます。

パッケージバージョンは0.1.900。R version 3.3.2で動作を確認しています。

スポンサーリンク
スポンサーリンク

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

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

#パッケージのインストール
install.packages("colr")

実行コマンド

詳細はコマンド、パッケージのヘルプを確認してください。

#パッケージの読み込み
library("colr")

###データ例の作成#####
n <- 10
TestData <- data.frame("Group" = sample(paste0("Group", 1:5), n, replace = TRUE),
                       "Data1" = sample(1:50, n, replace = TRUE),
                       "Data2" = sample(1:35, n, replace = TRUE),
                       "Data3" = sample(1:10, n, replace = TRUE),
                       "Vol.1" = sample(1:50, n, replace = TRUE),
                       "Vol.2" = sample(1:35, n, replace = TRUE),
                       "Vol.3" = sample(1:10, n, replace = TRUE))
#行名を付与
rownames(TestData) <- paste0(c("Group", "Data", "Vol"), 1:n)
#内容確認
TestData
Group Data1 Data2 Data3 Vol.1 Vol.2 Vol.3
Group1  Group2    17    20     1     8    26     7
Data2   Group4    27    32     2    20    27     3
Vol3    Group3     8    20     3    28    15     9
Group4  Group4    30    20     3    22    20     9
Data5   Group1    36    29     2    46    31     3
Vol6    Group4    15     2     4    20    15     2
Group7  Group2    18    30     1    47    29     2
Data8   Group3    14    13     9     2    32     4
Vol9    Group2    41     4     8    33    35     1
Group10 Group1    50    11     1    11     4     2
########

#指定した内容で行または列を抽出:cgrepコマンド
#データを指定:xオプション
#抽出内容を設定:patternオプション;正規表現の使用可能
#検索方向を指定:dimオプション:c;列方向,r;行方向
cgrep(x = TestData, pattern = "Vol", dim = "r")
Group Data1 Data2 Data3 Vol.1 Vol.2 Vol.3
Vol3 Group3     8    20     3    28    15     9
Vol6 Group4    15     2     4    20    15     2
Vol9 Group2    41     4     8    33    35     1

#行または列名を置換:csubコマンド
#データを指定:xオプション
#対象内容を設定:patternオプション;正規表現の使用可能
#置換内容を設定:replacementオプション;正規表現の使用可能
#検索方向を指定:dimオプション:c;列方向,r;行方向
csub(x = TestData, pattern = "a",
     replacement = "A", dim = "c")
Group DAtA1 DAtA2 DAtA3 Vol.1 Vol.2 Vol.3
Group1  Group2    17    20     1     8    26     7
Data2   Group4    27    32     2    20    27     3
Vol3    Group3     8    20     3    28    15     9
Group4  Group4    30    20     3    22    20     9
Data5   Group1    36    29     2    46    31     3
Vol6    Group4    15     2     4    20    15     2
Group7  Group2    18    30     1    47    29     2
Data8   Group3    14    13     9     2    32     4
Vol9    Group2    41     4     8    33    35     1
Group10 Group1    50    11     1    11     4     2

###正規表現の例#####
#[]で囲まれた文字のどれかと一致
cgrep(x = TestData, pattern = "[3a]", dim = "r")
Group Data1 Data2 Data3 Vol.1 Vol.2 Vol.3
Data2 Group1    25    32     5    44     9     3
Vol3  Group3    34    11     8    50    15     4
Data5 Group1    43    22     7    22    12     7
Data8 Group4    28    15     9    47     5     8
#^で否定,Data数字を非選択
#[:digit:]数字を意味する
cgrep(x = TestData, pattern = "[^Data[:digit:]]", dim = "r")
Group Data1 Data2 Data3 Vol.1 Vol.2 Vol.3
Group1  Group2    48    32     9    17    14     1
Vol3    Group3    34    11     8    50    15     4
Group4  Group2    42    32     6    24    12     4
Vol6    Group3    15    11     7    50    28     4
Group7  Group3     8    22     9    49     6     1
Vol9    Group4    26    30     8    19    13     9

あなたの解析が少しでも楽になりますように!!

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