【R】Columnの並び替え
2021年2月12日
頻繁ではないのですが、たまにデータの列を入れ替えたいときがあります。そのTipsが解説されたページがありましたので、やってみました。
Move column to a specific position in Rというページを参考にしました。
dplyrパッケージのrelocate関数を使います。ここでは、Tidyverseパッケージを呼び込んで使います。使用するデータは、diamondsです。
library(tidyverse) diamonds
> diamonds
# A tibble: 53,940 x 10
carat cut color clarity depth table price x y z
<dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
4 0.290 Premium I VS2 62.4 58 334 4.2 4.23 2.63
5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
7 0.24 Very Good I VVS1 62.3 57 336 3.95 3.98 2.47
8 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
9 0.22 Fair E VS2 65.1 61 337 3.87 3.78 2.49
10 0.23 Very Good H VS1 59.4 61 338 4 4.05 2.39
# ... with 53,930 more rows
relocateで列の順番を入れ替えられます。
diamonds <- diamonds %>% relocate(price, .before = cut) head(diamonds)
> head(diamonds)
# A tibble: 6 x 10
carat price cut color clarity depth table x y z
<dbl> <int> <ord> <ord> <ord> <dbl> <dbl> <dbl> <dbl> <dbl>
1 0.23 326 Ideal E SI2 61.5 55 3.95 3.98 2.43
2 0.21 326 Premium E SI1 59.8 61 3.89 3.84 2.31
3 0.23 327 Good E VS1 56.9 65 4.05 4.07 2.31
4 0.290 334 Premium I VS2 62.4 58 4.2 4.23 2.63
5 0.31 335 Good J SI2 63.3 58 4.34 4.35 2.75
6 0.24 336 Very Good J VVS2 62.8 57 3.94 3.96 2.48
複数列の入れ替えもできます。
diamonds <- diamonds %>% relocate(carat, price, .after = z) head(diamonds)
> head(diamonds)
# A tibble: 6 x 10
cut color clarity depth table x y z carat price
<ord> <ord> <ord> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1 Ideal E SI2 61.5 55 3.95 3.98 2.43 0.23 326
2 Premium E SI1 59.8 61 3.89 3.84 2.31 0.21 326
3 Good E VS1 56.9 65 4.05 4.07 2.31 0.23 327
4 Premium I VS2 62.4 58 4.2 4.23 2.63 0.290 334
5 Good J SI2 63.3 58 4.34 4.35 2.75 0.31 335
6 Very Good J VVS2 62.8 57 3.94 3.96 2.48 0.24 336