stringrを使った文字列処理 (3)

 今回も、stringrパッケージを使った文字列処理を紹介します。まず、str_subset関数を使うと、指定したパターンにマッチする文字列を含む要素が得られます。

# パッケージの読み込み
library(stringr)
# パターンにマッチする文字列を含む要素を抽出
verbs <- c("looked", "walked", "made", "took")
str_extract(verbs, "[a-z]+")
str_extract(verbs, "[a-z]{1, 4}")
str_extract(verbs, "ed")

 上記のスクリプトを実行すると、以下のような結果が得られます。

# str_extract(verbs, "[a-z]+")
[1] "looked"   "walked"   "made"   "took"
# str_extract(verbs, "[a-z]{1, 4}")
[1] "look"   "walk"   "made"   "took"
# str_extract(verbs, "ed")
[1] "ed"   "ed"   NA   NA

 また、str_extract関数を使うと、指定したパターンにマッチしない部分を取り除くことができます。

# パターンにマッチしない部分を削除
john <- c("Hello!", "My", "name", "is", "John.", "I", "am", "14", "years", "old.")
str_extract(john, "[A-Za-z]+")

 上記のスクリプトを実行すると、以下のような結果が得られます。

 [1] "Hello"   "My"   "name"   "is"   "John"   "I"   "am"   NA   "years"
[10] "old"

 そして、str_replace関数を使うと、指定したパターンにマッチした部分を置換することができます。

# パターンにマッチする部分を置換
adverbs <- c("really", "beautifully", "badly", "suddenly")
str_replace(adverbs, "ly", "")

 上記のスクリプトを実行すると、以下のような結果が得られます。

[1] "real"   "beautiful"   "bad"   "sudden"  

 因みに、指定したパターンにマッチする部分の数を知りたい場合には、str_count関数を使います。

# 指定したパターンにマッチする部分の数
str_count(verbs, "e")
str_count(verbs, "o")
str_count(verbs, "ed")

 上記のスクリプトを実行すると、以下のような結果が得られます。

# str_count(verbs, "e")
[1] 1 1 1 0
# str_count(verbs, "o")
[1] 2 0 0 2
# str_count(verbs, "ed")
[1] 1 1 0 0

 勿論、stringrパッケージには、ここで紹介した以外にも、多くの関数が実装されています。詳しくは、公式マニュアル (PDF) を参照してください。さらに、stringiという文字列処理のためのパッケージもありますので、そちらも試してみてください。