dplyr::arrange
dplyr::arrange
は、tidyverse コレクションの dplyr パッケージの関数で、データフレームを任意の列の値に従って並び替えるために使用される。
欠損値を含む列をソート する場合には、欠損値はデータセットの末尾に配置される。
クイックリファレンス
library(tidyverse)
df %>%
arrange(col1, col2, ...)
penguins %>%
arrange(bill_length_mm, desc(body_mass_g))
# # A tibble: 344 × 7
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
# <fct> <fct> <dbl> <dbl> <int> <int> <fct>
# 1 Adelie Dream 32.1 15.5 188 3050 female
# 2 Adelie Dream 33.1 16.1 178 2900 female
# 3 Adelie Torgersen 33.5 19 190 3600 female
# 4 Adelie Dream 34 17.1 185 3400 female
# 5 Adelie Torgersen 34.1 18.1 193 3475 NA
# 6 Adelie Torgersen 34.4 18.4 184 3325 female
# 7 Adelie Biscoe 34.5 18.1 187 2900 female
# 8 Adelie Torgersen 34.6 21.1 198 4400 male
# 9 Adelie Torgersen 34.6 17.2 189 3200 female
# 10 Adelie Biscoe 35 17.9 192 3725 female
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
基本構文
arrange(.data, ..., .by_group = FALSE, .locale = NULL)
引数 | 説明 |
---|---|
.data | データフレーム(または tibble)。 |
... | ソートの基準とする列名。desc() 関数を使って列を降順に並び替えることも可能。 |
.by_group = FALSE | グループ化されたデータフレームにおいて、各グループ内でソートするかどうかを制御する論理値。 |
.locale = NULL | 文字列をソートする際のロケールを指定するための引数。 |
使用例
1. 昇順ソート
dplyr::arrange
のデフォルトは、昇順ソート。
penguins %>%
arrange(body_mass_g)
# # A tibble: 344 × 7
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
# <fct> <fct> <dbl> <dbl> <int> <int> <fct>
# 1 Chinstrap Dream 46.9 16.6 192 2700 female
# 2 Adelie Biscoe 36.5 16.6 181 2850 female
# 3 Adelie Biscoe 36.4 17.1 184 2850 female
# 4 Adelie Biscoe 34.5 18.1 187 2900 female
# 5 Adelie Dream 33.1 16.1 178 2900 female
# 6 Adelie Torgersen 38.6 17 188 2900 female
# 7 Chinstrap Dream 43.2 16.6 187 2900 female
# 8 Adelie Biscoe 37.9 18.6 193 2925 female
# 9 Adelie Dream 37.5 18.9 179 2975 NA
# 10 Adelie Dream 37 16.9 185 3000 female
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
2. 降順ソート
dplyr::desc
を使用すると、降順ソートできる。
penguins %>%
arrange(desc(body_mass_g))
# # A tibble: 344 × 7
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
# <fct> <fct> <dbl> <dbl> <int> <int> <fct>
# 1 Gentoo Biscoe 49.2 15.2 221 6300 male
# 2 Gentoo Biscoe 59.6 17 230 6050 male
# 3 Gentoo Biscoe 51.1 16.3 220 6000 male
# 4 Gentoo Biscoe 48.8 16.2 222 6000 male
# 5 Gentoo Biscoe 45.2 16.4 223 5950 male
# 6 Gentoo Biscoe 49.8 15.9 229 5950 male
# 7 Gentoo Biscoe 48.4 14.6 213 5850 male
# 8 Gentoo Biscoe 49.3 15.7 217 5850 male
# 9 Gentoo Biscoe 55.1 16 230 5850 male
# 10 Gentoo Biscoe 49.5 16.2 229 5800 male
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
3. 複数列を基準にソート
指定された順番で、それぞれの列に対してソートすることも可能。
penguins %>%
arrange(bill_length_mm, desc(body_mass_g))
# # A tibble: 344 × 7
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex
# <fct> <fct> <dbl> <dbl> <int> <int> <fct>
# 1 Adelie Dream 32.1 15.5 188 3050 female
# 2 Adelie Dream 33.1 16.1 178 2900 female
# 3 Adelie Torgersen 33.5 19 190 3600 female
# 4 Adelie Dream 34 17.1 185 3400 female
# 5 Adelie Torgersen 34.1 18.1 193 3475 NA
# 6 Adelie Torgersen 34.4 18.4 184 3325 female
# 7 Adelie Biscoe 34.5 18.1 187 2900 female
# 8 Adelie Torgersen 34.6 21.1 198 4400 male
# 9 Adelie Torgersen 34.6 17.2 189 3200 female
# 10 Adelie Biscoe 35 17.9 192 3725 female
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows