SQLの SELECT CONCAT(FIELD1, ":", FIELD2) FROM TABLE のように、複数の文字列や列を結合する操作をR言語で説明します。
🔗 文字列の結合 (SELECT CONCAT(…))
SQLで CONCAT() 関数を使用して文字列(リテラル値)と列(フィールド)を連結し、新しい列を作成する操作は、R言語では主に paste0() 関数や、dplyr パッケージと組み合わせて mutate() 関数と paste0() を使用して行います。
1. paste0() 関数(Rで最も一般的な結合方法)
R言語の基本機能である paste0() 関数は、複数の引数を結合し、それらを新しい一つの文字列にするために使われます。デフォルトでは、区切り文字(セパレータ)なしで結合します。
| SQL | R言語 (base R / dplyr) | 説明 |
SELECT CONCAT(FIELD1, ":", FIELD2) FROM TABLE | TABLE %>% mutate(NewField = paste0(FIELD1, ":", FIELD2)) | FIELD1 の値、リテラル値 ":"、FIELD2 の値を結合し、NewField という新しい列として追加します。 |
コード例
データフレーム products の category と item_id を : で結合して、full_code という新しい列を作成する場合。
R
# SQL:
# SELECT CONCAT(category, ":", item_id) AS full_code FROM products
# R言語:
library(dplyr)
products %>%
mutate(full_code = paste0(category, ":", item_id))
2. paste() 関数(区切り文字を指定する場合)
もし結合したい文字列の間に、毎回同じ区切り文字を挿入したい場合は、paste() 関数を使うと便利です。paste() は、引数として与えられたすべての要素の間に、デフォルトで半角スペースを挿入します。区切り文字は sep 引数で指定できます。
| SQLの意図 | R言語 (paste()関数) | 説明 |
CONCAT_WS('-', FIELD1, FIELD2) (区切り文字指定の結合) | paste(FIELD1, FIELD2, sep = "-") | FIELD1 と FIELD2 の間に、指定した区切り文字**-**を挿入して結合します。 |
コード例
first_name と last_name の間に半角スペースを入れて full_name を作成する場合。
R
# SQL:
# SELECT CONCAT(first_name, " ", last_name) AS full_name FROM users
# R言語:
users %>%
mutate(full_name = paste(first_name, last_name, sep = " "))
# もしくは、セパレータのデフォルトがスペースなので:
# mutate(full_name = paste(first_name, last_name))
まとめ
| SQL操作 | Rの主な対応関数 | 特徴 |
CONCAT(F1, ":", F2) | paste0(F1, ":", F2) | 区切り文字を指定せず、引数をそのまま連結します。複雑な連結に向きます。 |
CONCAT(F1, " ", F2) | paste(F1, F2) | 区切り文字としてデフォルトで半角スペースを挿入します。 |
この方法で、SQLの CONCAT や同様の文字列結合操作をR言語で実行できます。