« [R]日付時刻型ベクトルの特定の要素(年、月、日、時、分、秒)だけを修正する | トップページ | [R]プロキシを設定する(Windows版) »

2023年9月 6日 (水)

[R]文字列を特定の文字または文字列で分割する

stringrパッケージのstr_split関数を使う。分割する文字列はベクトルで与えることができる。戻り値はリスト。分割させる文字または文字列は正規表現で指定することができる。

> library(stringr)
> s <- c("A B C", " D E F ")
> str_split(s, " ")
[[1]]
[1] "A" "B" "C"
[[2]]
[1] "" "D" "E" "" "F" ""

上の例では、1つの空白(0x20)で分割しようとしたが、ベクトルの2番目の要素は与えた文字列の先頭や最後に空白が含まれており、文字間の空白も1つ以上のため、分割がうまくいっていない。このような場合はあらかじめ前後の空白をtrimws関数で取り除き、正規表現のパターンを「[ ]+」(1つ以上の連続した空白(0x20))とすればよい。

> str_split(trimws(s), "[ ]+")
[[1]]
[1] "A" "B" "C"
[[2]]
[1] "D" "E" "F"

strsplit関数の戻り値はリストであり、これをベクトルにする場合はunlist関数を使う。

> unlist(str_split(trimws(s), "[ ]+"))
[1] "A" "B" "C" "D" "E" "F"

規則性なく空白が含まれるCSVの文字列の場合は、以下のような分割パターンを正規表現で与えれば、うまく分割することができる。

> unlist(str_split(trimws(s), "[ ,]+"))
[1] "A" "B" "C"

« [R]日付時刻型ベクトルの特定の要素(年、月、日、時、分、秒)だけを修正する | トップページ | [R]プロキシを設定する(Windows版) »

R(文字と文字列)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]日付時刻型ベクトルの特定の要素(年、月、日、時、分、秒)だけを修正する | トップページ | [R]プロキシを設定する(Windows版) »

無料ブログはココログ

■■

■■■