SQLの SELECT DISTINCT FIELD1 FROM TABLE のように、特定の列の重複した値を削除してユニークな値のみを表示する操作をR言語で説明します。
🗑️ 重複の削除 (SELECT DISTINCT)
SQLの DISTINCT キーワードは、結果セットから重複する行(または指定された列の値)を取り除くために使われます。R言語では、dplyr パッケージの distinct() 関数がこれに相当します。
1. distinct() 関数(DISTINCTの対応)
dplyr パッケージの distinct() 関数は、指定された列の組み合わせでユニークな(重複のない)行のみを抽出します。
| SQL | R言語 (dplyr) | 説明 |
SELECT DISTINCT FIELD1 FROM TABLE | TABLE %>% distinct(FIELD1) | データフレーム TABLE から、FIELD1 の重複のないユニークな値のみを抽出して表示します。 |
コード例
データフレーム transactions から、ユニークな顧客ID (customer_id) のリストを取得する場合。
R
# SQL:
# SELECT DISTINCT customer_id FROM transactions
# R言語:
library(dplyr)
transactions %>%
distinct(customer_id)
2. 複数の列に対する DISTINCT
SQLと同様に、複数の列を指定して、その組み合わせがユニークな行を抽出することも可能です。
| SQL | R言語 (dplyr) | 説明 |
SELECT DISTINCT F1, F2 FROM TABLE | TABLE %>% distinct(F1, F2) | F1 と F2 の値の組み合わせがユニークな行のみを抽出します。 |
応用コード例
「部署 (dept) と役職 (title) のユニークな組み合わせ」のリストを取得する場合。
R
# SQL:
# SELECT DISTINCT dept, title FROM employees
# R言語:
employees %>%
distinct(dept, title)
3. ベースRでの対応 (unique()関数)
dplyr を使わない基本的なR(ベースR)の機能でも、unique() 関数を使って同様の操作が可能です。
単一列の場合:
# SQL: SELECT DISTINCT FIELD1 FROM TABLE
unique(TABLE$FIELD1)
データフレーム全体(全列の組み合わせ)の場合:
# SQL: SELECT DISTINCT * FROM TABLE (全列の組み合わせの重複行を削除)
unique(TABLE)
しかし、SQLの操作に最も近い、パイプ (%>%) を使った直感的な構文は distinct() 関数です。
これで、SQLの DISTINCT 句を使った重複削除の操作をR言語で実行できます。