[R] 데이터 정렬하기 (order vs. arrange)

r-data-sort-order-arragne

해당 포스트에서는 R에서 데이터 정렬 방법(order(), arrange())에 대해 설명합니다.

1. INTRO

R에서 데이터 정렬이 필요한 경우, 내장 함수인 order()와 dplyr 패키지의 arrange() 함수를 많이 사용합니다. 아래에서는 두 함수의 사용 방법을 설명하니 상황에 따라 필요한 함수를 골라 사용하시면 됩니다.

 

2. order()

order()은 R에서 제공되는 내장 함수로 별도의 설치가 필요하지 않습니다. order() 함수만 단독으로 쓰는 경우, 각 값의 순위(rank)가 리턴되기에 일반적으로는 아래와 같이 변수 내 인덱싱에 적용하여 정렬하는데 사용됩니다.

  • mylist 생성
mylist <- c(2,5,3,1,4)
mylist
[1] 2 5 3 1 4
  • 각 값에 대한 순위값 출력
order(mylist)
[1] 4 1 3 5 2
  • 순위값을 활용한 정렬
# 오름차순 정렬
mylist[order(mylist)]
[1] 1 2 3 4 5
# 내림차순 정렬
mylist[order(mylist, decreasing = T)]
[1] 5 4 3 2 1

 

order() 실습 : mtcars 데이터 정렬

R 내장 데이터셋인 mtcars 데이터셋을 불러와 order() 함수를 이용하여 정렬해 보도록 하겠습니다.

  • 데이터 로드
data(mtcars)

mtcars
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
...
  • mpg 기준 오름차순 정렬

order() 함수의 기본 리턴값은 오름차순이므로 함수에 변수만 입력해주면 됩니다.

mtcars[order(mtcars$mpg),]
                     mpg cyl disp  hp drat    wt  qsec vs am gear carb
Cadillac Fleetwood  10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
Camaro Z28          13.3   8  350 245 3.73 3.840 15.41  0  0    3    4
Duster 360          14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
Chrysler Imperial   14.7   8  440 230 3.23 5.345 17.42  0  0    3    4
Maserati Bora       15.0   8  301 335 3.54 3.570 14.60  0  1    5    8
...
  • mpg 기준 내림차순 정렬
mtcars[order(mtcars$mpg, decreasing = T),]
                mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
...

 

3. dplyr::arrange()

dplyr 패키지에서 제공되는 arrange() 함수는 변수를 크기순으로 정렬하여 새로운 데이터를 만들거나 조회할 때 사용합니다. 아래 예시에서는 위에서 사용한 mtcars 데이터셋을 이용하여 오름차순, 내림차순 정렬 방법을 설명합니다.

  • mpg 기준 오름차순 정렬

arrange() 함수 정렬 기본값은 오름차순이므로 함수에 변수만 입력하면 됩니다.

library(dplyr)

mtcars %>% arrange(mpg)
                     mpg cyl disp  hp drat    wt  qsec vs am gear carb
Cadillac Fleetwood  10.4   8  472 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8  460 215 3.00 5.424 17.82  0  0    3    4
Camaro Z28          13.3   8  350 245 3.73 3.840 15.41  0  0    3    4
Duster 360          14.3   8  360 245 3.21 3.570 15.84  0  0    3    4
Chrysler Imperial   14.7   8  440 230 3.23 5.345 17.42  0  0    3    4
Maserati Bora       15.0   8  301 335 3.54 3.570 14.60  0  1    5    8
...
  • mpg 기준 내림차순 정렬

arragne() 함수에 desc() 함수를 사용하면 내림차순으로 정렬할 수 있습니다.

library(dplyr)

mtcars %>% arrange(desc(mpg))
                mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
...

 

4. 관련 링크

[1] [R] 연산자(Operator) 종류 및 사용법 - 기초편
[2] [R] 연산자(Operator) 종류 및 사용법 - 초급편
[3] [R] 연산자(Operator) 종류 및 사용법 - 중급편
[4] [R] 연산자(Operator) 종류 및 사용법 - 고급편

banner-request-analysis