9.重複を削除する -SQL経験者のためのR入門

SQLの SELECT DISTINCT FIELD1 FROM TABLE のように、特定の列の重複した値を削除してユニークな値のみを表示する操作をR言語で説明します。


🗑️ 重複の削除 (SELECT DISTINCT)

SQLの DISTINCT キーワードは、結果セットから重複する行(または指定された列の値)を取り除くために使われます。R言語では、dplyr パッケージの distinct() 関数がこれに相当します。

1. distinct() 関数(DISTINCTの対応)

dplyr パッケージの distinct() 関数は、指定された列の組み合わせでユニークな(重複のない)行のみを抽出します。

SQLR言語 (dplyr)説明
SELECT DISTINCT FIELD1 FROM TABLETABLE %>% 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と同様に、複数の列を指定して、その組み合わせがユニークな行を抽出することも可能です。

SQLR言語 (dplyr)説明
SELECT DISTINCT F1, F2 FROM TABLETABLE %>% distinct(F1, F2)F1F2 の値の組み合わせがユニークな行のみを抽出します。

応用コード例

「部署 (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言語で実行できます。