R言語のstringrパッケージに含まれているstr_like()関数について解説します。この関数は、「SQLのLIKE演算子と同じ感覚で、シンプルなワイルドカード検索をしたい」ときに使える関数です。結果は真偽値(TRUEまたはFALSE)で返ってくるため、データのフィルタリング(抽出)に最適です。
stringrパッケージは、文字列データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
str_like()は、SQLのLIKE演算子と同じ方法で文字列のパターンを検出するための関数です。str_like()は、SQLのLIKE演算子の規則に従います。
- 文字列全体に一致する必要があります
- 「_」は、1文字と一致します(. など)
- 「%」は、任意の数の文字と一致します(.* など)
- 「\%」と「\_」は、リテラルの「%」と「_」に一致します
- デフォルトでは、大文字と小文字は区別されません
使い方
str_like(string, pattern, ignore_case = TRUE)
引数
string
文字ベクトルまたは文字ベクトルに変換可能なものを指定します。
pattern
SQLの「like」パターンを含む文字ベクトルを指定します。
詳細は上記を参照してください。
ignore_case = TRUE
大文字と小文字を区別するかどうかを指定します。
デフォルトはTRUEで、SQLのLIKE演算子に一致します。
戻り値
文字列と同じ長さの論理ベクトルが返されます。
使用例
準備
あらかじめ、tidyverseパッケージまたはstringrパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(stringr)
ワイルドカードを使って文字列を検索
文字列「あいうえお」と「かきくけこ」で文字列「あ」から始まる文字列かどうかを確認するには次のようにします。
str_like(c("あいうえお", "かきくけこ"), "あ%")
[1] TRUE FALSE