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) ```