医療職からデータサイエンティストへ医療職からデータサイエンティストへ統計学、機械学習に関する記事をまとめています。RRで文字列処理をすることって地味によくありますよね。そんな突如として必要性が湧いてくる文字列処理、Rには文字列を扱うパッケージがいくつかありますが、その中でも抜群に使いやすいのが{stringr}の特徴です。文字列処理を統一的な方法で行えるため、直感的にも分かりやすく、さらには{dplyr}などのデータフレーム加工パッケージとも相性が良いです。www.medi-08-data-06.work今回はそんな{stringr}の使い方をまとめていきます。文字列の基本処理関数まずは、文字列の連結や分割、切り出しなどの基本関数を紹介します。str_length:文字の長さを調べるstr_trim:空白の除去str_dup:文字の繰り返しstr_c:文字の連結str_sub:文字の切り出しstr_split:文字の分割str_length:文字の長さを調べる単に文字列の長さを返します。通常のlengthはオブジェクトの長さを返すため、文字列の長さは測れません。1str_trim:空白の除去str_trimは文字の前後にある空白を取り除きます。引数のsideには(both,right,left)があり、どこの空白を除去するかを指定できます。"Apple"str_dup:文字の繰り返しstr_dupは指定の文字列を繰り返します。repと何が違うかというと、repはベクトル、str_dupは一つの文字列として返します。"Apple"str_c:文字の連結str_cは私が一番よく使う関数なのですが、文字列を空白なしで連結します。Rの基本関数の中ではpaste0と同じ働きです。str_cはsepという引数を受け取って、任意の文字で繋げることができます。"Apple+Banana+Pineapple"また、文字列をベクトルで渡すとそれぞれの文字に対して、文字を結合してくれます。Pineapple"逆にベクトルの中の要素を繋げたいときは、collapseという引数を指定します。collapseに指定した文字で結合します。Pineapple"str_sub:文字の切り出しstr_subはstartとendを受け取って、文字数で指定した箇所を切り出します。"pl"さらに、これを使うと任意の箇所の文字を変更できます。文字列を任意の文字で分割するにはstr_splitを使います。結果はリストで返ってきますが、simplify=Tとするとマトリックス型で返ってきます。ID番号と名前が空白で区切られて格納されている文字列を分割してみます。分割数も指定できるので、n=2とすると、ID番号と名前に分割することもできます。ちなみに日本語、全角にも対応しています。文字列マッチング目視でデータが確認できない時、条件にマッチした文字のみを処理したい場合があります。そんな時もstringrには便利な関数がたくさんあります。指定できるパターンに正規表現を使うと、自由自在にお望みの文字列を検索できるのですが、今回は正規表現を使わずに関数の使い方に注目して紹介していきます。str_subset:指定パターンを含む文字列を返すstr_locate:指定パターンにマッチする箇所の文字数を返すstr_detect:指定パターンを含んでいるかどうかをTRUE,FALSEで返すstr_replace:指定パターンにマッチした箇所を違う文字に置き換えるそれではいきましょう。www.medi-08-data-06.workstr_subset:指定パターンを含む文字列を返すこちらは、指定パターンを含む文字列を返してくれます。"A"を含む文字列を探してみます。"Banana"上記の通り、論理式でも指定できます。論理式ごとクウォート、もしくはダブルクウォートで囲うことに注意です。str_detect:指定パターンを含んでいるかどうかをTRUE,FALSEで返すstr_detectはstr_subsetと違ってTRUE、FALSEで結果が返ってきます。FALSEstr_locate:指定パターンにマッチする箇所の文字数を返すstr_locateは、マッチする箇所の最初と最後の文字数をマトリックスで返してくれます。NAstr_locateは最初にマッチした場所しか返さないので、全ての場所を知りたい場合は、str_locate_allとします。endstr_replace:指定パターンにマッチした箇所を違う文字に置き換えるstr_replaceはマッチした箇所を違う文字に置き換えることができます。この関数もマッチした最初の一文字しか置き換えれないため、全てを置き換えるには、str_replace_allを使います。"OrXXXnge"その他便利な関数その他にも便利な関数を紹介しておきます。upper:大文字、小文字の変換これは簡単で、大文字、小文字の変換を行います。"AAABBB"str_pad:指定の文字数まで任意の文字で埋めるstr_padは文字数の違う文字列ベクトルを指定の文字数まで、任意の文字(デフォルトはスペース)で埋めることができます。引数では埋める方向(both,right,left)も指定できます。Rで文字列操作を行う時には、{stringr}を使えば文字列を自由自在に扱えます。パターンマッチングでは、正規表現を使うと文字列処理に関しては怖いもの無しですね。正規表現については、またどこかでまとめていきます。Science上記サイトの和書版です。dplyrやpurrr、tidyrなどモダンなパッケージをまとめたtidyverseを中心に、データの解析手法そのものよりも、いかに効率よくデータを解析するかが書かれています。学んだこと、日々の所感をまとめていきます。※本ブログは筆者が個人的に学んだこと感じたことをまとめたブログになります。所属する組織の意見・見解とは無関係です。medi_data0826引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。