[`dplyr::relocate()`](https://dplyr.tidyverse.org/reference/relocate.html) は、既存の列の位置を変更する関数である。列を指定するときは tidyselect を使用することが出来る。
## 列を先頭に移動する
デフォルトでは、指定した列をデータフレームの先頭に移動する。
```r
penguins |>
relocate(contains("bill"))
```
```
# A tibble: 344 × 8
bill_length_mm bill_depth_mm species island flipper_length_mm body_mass_g sex year
<dbl> <dbl> <fct> <fct> <int> <int> <fct> <int>
1 39.1 18.7 Adelie Torgersen 181 3750 male 2007
2 39.5 17.4 Adelie Torgersen 186 3800 female 2007
3 40.3 18 Adelie Torgersen 195 3250 female 2007
4 NA NA Adelie Torgersen NA NA NA 2007
5 36.7 19.3 Adelie Torgersen 193 3450 female 2007
6 39.3 20.6 Adelie Torgersen 190 3650 male 2007
7 38.9 17.8 Adelie Torgersen 181 3625 female 2007
8 39.2 19.6 Adelie Torgersen 195 4675 male 2007
9 34.1 18.1 Adelie Torgersen 193 3475 NA 2007
10 42 20.2 Adelie Torgersen 190 4250 NA 2007
# ℹ 334 more rows
# ℹ Use `print(n = ...)` to see more rows
```
## `.before` で指定列の前に移動する
`.before` パラメータに列名や列番号を指定することで、その列の直前に移動できる。
```r
penguins |>
relocate(contains("bill"), .before = island)
```
```
# A tibble: 344 × 8
species bill_length_mm bill_depth_mm island flipper_length_mm body_mass_g sex year
<fct> <dbl> <dbl> <fct> <int> <int> <fct> <int>
1 Adelie 39.1 18.7 Torgersen 181 3750 male 2007
2 Adelie 39.5 17.4 Torgersen 186 3800 female 2007
3 Adelie 40.3 18 Torgersen 195 3250 female 2007
4 Adelie NA NA Torgersen NA NA NA 2007
5 Adelie 36.7 19.3 Torgersen 193 3450 female 2007
6 Adelie 39.3 20.6 Torgersen 190 3650 male 2007
7 Adelie 38.9 17.8 Torgersen 181 3625 female 2007
8 Adelie 39.2 19.6 Torgersen 195 4675 male 2007
9 Adelie 34.1 18.1 Torgersen 193 3475 NA 2007
10 Adelie 42 20.2 Torgersen 190 4250 NA 2007
# ℹ 334 more rows
# ℹ Use `print(n = ...)` to see more rows
```
## `.after` で指定列の後に移動する
`.after` パラメータに列名や列番号を指定することで、その列の直後に移動できる。
```r
penguins |>
relocate(contains("bill"), .after = 1)
```
```
# A tibble: 344 × 8
species bill_length_mm bill_depth_mm island flipper_length_mm body_mass_g sex year
<fct> <dbl> <dbl> <fct> <int> <int> <fct> <int>
1 Adelie 39.1 18.7 Torgersen 181 3750 male 2007
2 Adelie 39.5 17.4 Torgersen 186 3800 female 2007
3 Adelie 40.3 18 Torgersen 195 3250 female 2007
4 Adelie NA NA Torgersen NA NA NA 2007
5 Adelie 36.7 19.3 Torgersen 193 3450 female 2007
6 Adelie 39.3 20.6 Torgersen 190 3650 male 2007
7 Adelie 38.9 17.8 Torgersen 181 3625 female 2007
8 Adelie 39.2 19.6 Torgersen 195 4675 male 2007
9 Adelie 34.1 18.1 Torgersen 193 3475 NA 2007
10 Adelie 42 20.2 Torgersen 190 4250 NA 2007
# ℹ 334 more rows
# ℹ Use `print(n = ...)` to see more rows
```
## 関連ノート
- **[派生]** [[dplyr の rename() でデータフレームの列名を変更する]]: 列の位置変更 (`relocate()`) と並ぶ、列を整理する dplyr 関数