7.レコードの抽出-SQL経験者のためのR入門

SQLの SELECT * FROM TABLE WHERE FIELD1 = 1 のように、特定の条件を満たす行(レコード)を抽出する操作をR言語で説明します。


🧐 レコードの抽出(WHERE句)

SQLの WHERE 句は、指定した条件に基づいてデータ(行)を絞り込むために使われます。R言語では、dplyr パッケージの filter() 関数がこれに相当します。

1. filter() 関数(WHERE句の対応)

dplyr パッケージの filter() 関数は、SQLの WHERE 句と同じ役割を果たし、指定した論理条件TRUE となる行のみを選択します。

SQLR言語 (dplyr)説明
SELECT * FROM TABLE WHERE FIELD1 = 1TABLE %>% filter(FIELD1 == 1)データフレーム TABLE から、FIELD1 の値が $1$ と等しい行のみを抽出します。

コード例

データフレーム employees から、部署コード (dept_code) が A01 の従業員のみを抽出する場合。

R

# SQL:
# SELECT * FROM employees WHERE dept_code = 'A01'

# R言語:
library(dplyr)

employees %>%
  filter(dept_code == 'A01')

ポイント: Rでは、等しいという比較には ==(イコールを二つ)を使用します。= は変数への代入に使用されるため、混同しないように注意が必要です。


2. 主な比較演算子の対応

filter() 関数内で使用できる比較演算子は、SQLとほぼ同じです。

比較演算子SQLR言語説明
等しい===例: age == 30
より大きい>>例: salary > 50000
より小さい<<例: score < 70
以上>=>=例: qty >= 10
以下<=<=例: qty <= 100
等しくない!= または <>!=例: status != 'Cancelled'

3. 論理演算子(AND, OR, NOT)の対応

複数の条件を組み合わせるために使用される論理演算子も、SQLとRで対応しています。

論理演算子SQLR言語説明
ANDAND&両方の条件が TRUE の場合に抽出
OROR|一方の条件が TRUE の場合に抽出
NOTNOT!条件が FALSE の場合に抽出

応用コード例

「部署が A01 かつ 給与が $50000$ 」の従業員を抽出する場合。

R

# SQL:
# SELECT * FROM employees WHERE dept_code = 'A01' AND salary > 50000

# R言語:
employees %>%
  filter(dept_code == 'A01' & salary > 50000)

この filter() 関数と適切な比較・論理演算子を使うことで、SQLの WHERE 句と同じように柔軟なレコード抽出が可能です。