ここではR標準のbase
パッケージを使用して、文字列を操作する方法を紹介する。
もう少し高度な文字列操作をするには、stringr
パッケージの使用をおすすめする。
文字列を結合する
文字列を結合するには、paste()
もしくはpaste0()
関数を使用する。paste()
の初期値では、文字列を結合するときに、スペースでつなぐが、paste0
では、スペースなしに結合する。
paste(..., sep, collaspse)
paste0(..., collaspse)
引数 | 説明 | 初期値 |
---|---|---|
… | 結合するベクトル | |
sep | 区切り文字 | " " |
collapse | 区切り文字 | NULL |
生成されるベクトルを結合させて、一つの文字列にするためにはcollapse
で区切り文字を指定する。
文字列同士を結合する
> paste("This", "is", "a", "pen.")
[1] "This is a pen."
> paste0("This", "is", "a", "pen.")
[1] "Thisisapen."
ベクトルに文字列を結合する
> Month <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
> paste("Month:", Month)
[1] "Month: Jan" "Month: Feb" "Month: Mar" "Month: Apr" "Month: May"
[6] "Month: Jun" "Month: Jul" "Month: Aug" "Month: Sep" "Month: Oct"
[11] "Month: Nov" "Month: Dec"
ベクトル同士を結合する
> Month_J <- c("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")
> paste(Month, Month_J, sep=": ")
[1] "Jan: 1月" "Feb: 2月" "Mar: 3月" "Apr: 4月" "May: 5月" "Jun: 6月"
[7] "Jul: 7月" "Aug: 8月" "Sep: 9月" "Oct: 10月" "Nov: 11月" "Dec: 12月"
> paste(Month, Month_J, sep=": ", collapse="; ")
[1] "Jan: 1月; Feb: 2月; Mar: 3月; Apr: 4月; May: 5月; Jun: 6月; Jul: 7月; Aug: 8月; Sep: 9月; Oct: 10月; Nov: 11月; Dec: 12月"
文字列を置換する
文字列を置換するにはsub()
関数やgsub()
関数を使用する。sub()
関数は最初に一致した文字列のみを置換するが、gsub()
関数は一致するすべての文字列を置換する。
sub(pattern, replacement, x)
gsub(pattern, replacement, x)
引数 | 説明 |
---|---|
pattern | 置換前の文字列 |
replacement | 置換後の文字列 |
x | 文字列を検索するベクトル |
> data <- c("ID", "Personal_ID", "Review_ID", "Sequence_ID", "Published_day_month_year")
> sub("_", "", data)
[1] "ID" "PersonalID" "ReviewID" "SequenceID" "Publishedday_month_year"
> gsub("_", "", data)
[1] "ID" "PersonalID" "ReviewID" "SequenceID" "Publisheddaymonthyear"
文字列の空白を削除する
上記のgsub()
関数を使って、スペースを潰す。
gsub(" ", "", x)
> str <- c(" a ", " b & c ", " d e f ")
> gsub(" ", "", str)
[1] "a" "b&c" "def"
## 文字列を変換する
小文字に変換する
tolower()
大文字に変換する
toUpper()
文字列を分割する
文字列を分割するには、strsplit()
関数を使用する。
返り値は、リスト。
strsplit(x, split)
引数 | 説明 |
---|---|
x | 文字列のベクトル |
split | 文字列を分解を指定する正規表現。 |
> strsplit("No.1: This is a pen. I bought it.", "\\.")
[[1]]
[1] "No" "1: This is a pen" " I bought it"
スペースごとに分割する
区切り文字として、スペースを指定する。
> fruits <- "apple orange mango banana"
> strsplit(fruits, " ")
[[1]]
[1] "apple" "orange" "mango" "banana"
ピリオド・ドットごとに分割する
正規表現でピリオド・ドットは、任意の一文字となってしまう。そのため、strsplit()
の第二引数を"."
としても、うまく分割してくれない。
それを避けるためにバックスラッシュ\
でエスケープし、"\\."
とする。
> strsplit("ABC.123", "\.")
一文字ずつ分解する
指定文字列を""
で行う
> strsplit("I'm a perfect human", "")
[[1]]
[1] "I" "'" "m" " " "a" " " "p" "e" "r" "f" "e" "c" "t" " " "h" "u" "m" "a" "n"
分割後に、ベクトル化する
二重ブラケット[[]]を使用する。
> strsplit(Country, ",")[[1]]
[1] "Japan" " USA" " Germany" " UK"
unlist()関数を使用する
> Tissue <- "heart, skeletal muscle, placenta, lung"
> strsplit(Tissue, ",") %>% unlist
[1] "heart" " skeletal muscle" " placenta" " lung"