Rで解析:文字列に部分一致・完全一致するデータを取得するコマンドの例

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

データに一致する文字列を取得するコマンドとして、部分一致に「grep」コマンド、完全一致に「charmatch」コマンドがあります。意外と知られていないので紹介します。

実行コマンドはR version 4.1.2で確認しています。


スポンサーリンク

実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。

###テストデータの作成#####
TestData <- data.frame(Char = c("&#12363;", "&#12363;&#12425;", "&#12363;&#12425;&#12384;", "&#12363;&#12425;&#12384;&#12395;", "&#12363;&#12425;&#12384;&#12395;",
                                "&#12363;&#12425;&#12384;&#12395;&#12356;", "&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;", "&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12418;",
                                "&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12418;&#12398;"),
                       Data = 1:9)
########

#&#12300;&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12301;&#12434;&#21547;&#12416;&#12505;&#12463;&#12488;&#12523;&#12434;&#25277;&#20986;
IncKey <- TestData[, 1] %in% grep("&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;", TestData[, 1], value = TRUE)
#&#12487;&#12540;&#12479;&#12363;&#12425;&#25277;&#20986;
subset(TestData, IncKey)
Char Data
7     &#12363;&#12425;&#12384;&#12395;&#12356;&#12356;    7
8   &#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12418;    8
9 &#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12418;&#12398;    9

#&#12300;&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;&#12301;&#12384;&#12369;&#12434;&#21547;&#12416;&#12505;&#12463;&#12488;&#12523;&#12434;&#25277;&#20986;
MatchVec <- charmatch("&#12363;&#12425;&#12384;&#12395;&#12356;&#12356;", TestData[, 1])
#&#12487;&#12540;&#12479;&#12363;&#12425;&#25277;&#20986;
TestData[MatchVec,]
Char Data
7 &#12363;&#12425;&#12384;&#12395;&#12356;&#12356;    7

#TestData&#12395;&#12394;&#12356;&#20869;&#23481;&#12434;&#26908;&#32034;
charmatch("&#12356;", TestData[, 1])
[1] NA

#NA&#12384;&#12392;&#20351;&#12356;&#21213;&#25163;&#12364;&#24746;&#12356;&#22580;&#21512;&#12364;&#12354;&#12427;,NA&#20197;&#22806;&#12398;&#20516;&#12391;&#21462;&#24471;&#12375;&#12383;&#12356;
#nomatch&#12458;&#12503;&#12471;&#12519;&#12531;&#12398;&#35373;&#23450;:NA&#12391;&#12399;&#12394;&#12367;0&#12391;&#21462;&#24471;
charmatch("&#12356;", TestData[, 1], nomatch = 0)
[1] 0

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

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