[`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 関数