Rプログラミングにおいて、文字列操作は頻繁に必要となる作業です。その中でも`sub`関数は文字列置換の基本的なツールとして広く使われています。
## 基本的な使い方
`sub`関数は「substitute(代替する)」の略で、文字列中の最初に出現するパターンを指定した文字列に置き換えます。
```r
sub(pattern = "置換前のパターン", replacement = "置換後の文字列", x = "対象の文字列")
```
分かりにくいと思うので、例を作ってみます。
```r
sub("abc", "ABC", "abcdef")
```
動かしてみるとこのようになります。
```R
> sub("abc", "ABC", "abcdef")
[1] "ABCdef"
```
置換後の文字列は、何もないものも指定できます。
```r
sub("month_", "", "month_12")
```
動かしてみます。
```R
> sub("month_", "", "month_12")
[1] "12"
```
## 実際の使い方
実際は表形式のデータの列を置換して新しい列を作ることが多いです。以下に例を示します。
```R
# サンプルデータの作成
df <- data.frame(
x = c("month_0", "month_6", "month_12", "month_0", "month_6", "month_12")
)
# データの確認
print(df)
```
ここまでの結果を確認しましょう。
この `month_0` から、 `0` だけを取り出したいとします。
```R
> print(df)
x
1 month_0
2 month_6
3 month_12
4 month_0
5 month_6
6 month_12
```
```R
# subを使ってmonth列を作成
df$month <- sub("month_", "", df$x)
# 結果の確認
print(df)
```
結果です。うまく月の数字だけとりだせました。
```R
> print(df)
x month
1 month_0 0
2 month_6 6
3 month_12 12
4 month_0 0
5 month_6 6
6 month_12 12
```
ただし、このままですと `month` は [[文字列]] です。`sub` 関数は文字列を扱う関数なので、たとえ取り出したものが `0` や `6` などでも、それは取り出した直後は文字列になっています。
[[数値]] に変えておきましょう。
```
df$month = as.numeric(df$month)
```