해당 포스트에서는 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) 종류 및 사용법 - 고급편