SQLの SELECT * FROM TABLE ORDER BY FIELD1 のように、結果の行を特定のフィールド(列)の値に基づいて並び替える操作をR言語で説明します。
⏫ データ(行)の並び替え (ORDER BY)
SQLの ORDER BY 句は、結果セットを昇順または降順でソートするために使われます。R言語では、dplyr パッケージの arrange() 関数がこれに相当します。
1. arrange() 関数(ORDER BYの対応)
dplyr パッケージの arrange() 関数は、指定した列に基づいてデータフレームの行を並び替えます。
| SQL | R言語 (dplyr) | 説明 |
ORDER BY FIELD1 | TABLE %>% arrange(FIELD1) | FIELD1 の値に基づいて、データを昇順(小さい順、A→Z、古い順)に並び替えます。 |
コード例(昇順)
データフレーム scores を、点数 (score) の昇順に並び替える場合。
R
# SQL:
# SELECT * FROM scores ORDER BY score
# R言語:
library(dplyr)
scores %>%
arrange(score)
2. 降順での並び替え(DESCの対応)
SQLで DESC を使うと降順(大きい順)に並び替えますが、Rの arrange() 関数では、並び替えたい列名の前に desc() ヘルパー関数を使用します。
| SQL | R言語 (dplyr) | 説明 |
ORDER BY FIELD1 DESC | TABLE %>% arrange(desc(FIELD1)) | FIELD1 の値に基づいて、データを降順(大きい順、Z→A、新しい順)に並び替えます。 |
コード例(降順)
データフレーム scores を、点数 (score) の降順に並び替える場合。
R
# SQL:
# SELECT * FROM scores ORDER BY score DESC
# R言語:
scores %>%
arrange(desc(score))
3. 複数フィールドでの並び替え
SQLと同様に、Rでも複数の列を指定して並び替えることができます。指定した順番にプライマリキー、セカンダリキーとしてソートされます。
| SQL | R言語 (dplyr) | 説明 |
ORDER BY F1, F2 DESC | TABLE %>% arrange(F1, desc(F2)) | 最初に F1 で昇順にソートし、F1 が同じ行は F2 で降順にソートします。 |
応用コード例
「部署 (dept) は昇順、かつ、その中で給与 (salary) は降順」に並び替える場合。
R
# SQL:
# SELECT * FROM employees ORDER BY dept, salary DESC
# R言語:
employees %>%
arrange(dept, desc(salary))
これで、SQLの ORDER BY 句を使ったデータの並び替えの操作をR言語で実行できます。