8.並び替えをする -SQL経験者のためのR入門

SQLの SELECT * FROM TABLE ORDER BY FIELD1 のように、結果の行を特定のフィールド(列)の値に基づいて並び替える操作をR言語で説明します。


⏫ データ(行)の並び替え (ORDER BY)

SQLの ORDER BY 句は、結果セットを昇順または降順でソートするために使われます。R言語では、dplyr パッケージの arrange() 関数がこれに相当します。

1. arrange() 関数(ORDER BYの対応)

dplyr パッケージの arrange() 関数は、指定した列に基づいてデータフレームの行を並び替えます。

SQLR言語 (dplyr)説明
ORDER BY FIELD1TABLE %>% 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() ヘルパー関数を使用します。

SQLR言語 (dplyr)説明
ORDER BY FIELD1 DESCTABLE %>% 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でも複数の列を指定して並び替えることができます。指定した順番にプライマリキー、セカンダリキーとしてソートされます。

SQLR言語 (dplyr)説明
ORDER BY F1, F2 DESCTABLE %>% 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言語で実行できます。