SQLの SELECT * FROM TABLE WHERE FIELD1 = 1 のように、特定の条件を満たす行(レコード)を抽出する操作をR言語で説明します。
🧐 レコードの抽出(WHERE句)
SQLの WHERE 句は、指定した条件に基づいてデータ(行)を絞り込むために使われます。R言語では、dplyr パッケージの filter() 関数がこれに相当します。
1. filter() 関数(WHERE句の対応)
dplyr パッケージの filter() 関数は、SQLの WHERE 句と同じ役割を果たし、指定した論理条件が TRUE となる行のみを選択します。
| SQL | R言語 (dplyr) | 説明 |
SELECT * FROM TABLE WHERE FIELD1 = 1 | TABLE %>% 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とほぼ同じです。
| 比較演算子 | SQL | R言語 | 説明 |
| 等しい | = | == | 例: age == 30 |
| より大きい | > | > | 例: salary > 50000 |
| より小さい | < | < | 例: score < 70 |
| 以上 | >= | >= | 例: qty >= 10 |
| 以下 | <= | <= | 例: qty <= 100 |
| 等しくない | != または <> | != | 例: status != 'Cancelled' |
3. 論理演算子(AND, OR, NOT)の対応
複数の条件を組み合わせるために使用される論理演算子も、SQLとRで対応しています。
| 論理演算子 | SQL | R言語 | 説明 |
| AND | AND | & | 両方の条件が TRUE の場合に抽出 |
| OR | OR | | | 一方の条件が TRUE の場合に抽出 |
| NOT | NOT | ! | 条件が 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 句と同じように柔軟なレコード抽出が可能です。