4.5 arrange()
함수를 이용한 행의 정렬
4.5.1 arrange()
함수의 기본 형식
arrange(dataframe, order criterion 1, order criterion 2, ...)
dataframe
: 데이터 세트order criterion
: 정렬 기준이 되는 컬럼 명(디폴트로 오름차순). 내림차순의 경우desc(컬럼명)
데이터 프레임을 정렬할 때 arrange()
함수를 쓰면 매우 편리하다.
Cars93_1
데이터 프레임의 행들을 최고가격(Max.Price
) 컬럼 기준으로 오름 차순으로 정렬해 보자.
# arrange() : reorder rows of data frame in ascending order
<- arrange(Cars93_1, Max.Price)
b1 head(b1)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Ford Festiva Small 6.9 7.4 7.9 31 33
## 2 Mazda 323 Small 7.4 8.3 9.1 29 37
## 3 Hyundai Excel Small 6.8 8.0 9.2 29 33
## 4 Subaru Justy Small 7.3 8.4 9.5 33 37
## 5 Volkswagen Fox Small 8.7 9.1 9.5 25 33
## 6 Pontiac LeMans Small 8.2 9.0 9.9 31 41
# 또는
<- Cars93_1 %>%
b2 arrange(Max.Price)
head(b2)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Ford Festiva Small 6.9 7.4 7.9 31 33
## 2 Mazda 323 Small 7.4 8.3 9.1 29 37
## 3 Hyundai Excel Small 6.8 8.0 9.2 29 33
## 4 Subaru Justy Small 7.3 8.4 9.5 33 37
## 5 Volkswagen Fox Small 8.7 9.1 9.5 25 33
## 6 Pontiac LeMans Small 8.2 9.0 9.9 31 41
이제는 Cars93_1
데이터 프레임의 행들을 최고가격(Max.Price
) 컬럼 기준으로 내림 차순으로 정렬해 보자.
# arrange() : reorder rows of data frame in descending order
<- arrange(Cars93_1, desc(Max.Price))
b3 head(b3)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Mercedes-Benz 300E Midsize 43.8 61.9 80.0 19 25
## 2 Infiniti Q45 Midsize 45.4 47.9 50.4 17 22
## 3 Audi 100 Midsize 30.8 37.7 44.6 19 26
## 4 Cadillac Seville Midsize 37.5 40.1 42.7 16 25
## 5 Chevrolet Corvette Sporty 34.6 38.0 41.5 17 25
## 6 Acura Legend Midsize 29.2 33.9 38.7 18 25
# 또는
<- Cars93_1 %>%
b4 arrange(desc(Max.Price))
head(b4)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Mercedes-Benz 300E Midsize 43.8 61.9 80.0 19 25
## 2 Infiniti Q45 Midsize 45.4 47.9 50.4 17 22
## 3 Audi 100 Midsize 30.8 37.7 44.6 19 26
## 4 Cadillac Seville Midsize 37.5 40.1 42.7 16 25
## 5 Chevrolet Corvette Sporty 34.6 38.0 41.5 17 25
## 6 Acura Legend Midsize 29.2 33.9 38.7 18 25
4.5.2 복수 개의 정렬 기준으로 행을 정렬하기
여러개의 기준에 의해서 정렬을 하고 싶으면 기준이 되는 컬럼을 정렬하고자 하는 순서대로 나열하면 됩니다.
기본 정렬 옵셥은 오름차순(ascending)이며, 만약 내림차순(descending) 으로 정렬을 하고 싶다면 desc()
를 입력해주면 됩니다.
Cars93_1
데이터 프레임의 고속도로 연비(MPG.highway
) 가 높은 순서(오름차순)대로 정렬을 하되, 만약 고속도로 연비가 동일하다면 최고가격(Max.Price
)가 낮은 순서대로(내림차순) 정렬을 해보자.
# arrange() : reorder rows of data frame
<- arrange(Cars93_1, desc(MPG.highway), Max.Price)
b5 head(b5)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Geo Metro Small 6.7 8.4 10.0 46 50
## 2 Honda Civic Small 8.4 12.1 15.8 42 46
## 3 Suzuki Swift Small 7.3 8.6 10.0 39 43
## 4 Pontiac LeMans Small 8.2 9.0 9.9 31 41
## 5 Saturn SL Small 9.2 11.1 12.9 28 38
## 6 Mazda 323 Small 7.4 8.3 9.1 29 37
# 또는
<- Cars93_1 %>%
b6 arrange(desc(MPG.highway), Max.Price)
head(b6)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 1 Geo Metro Small 6.7 8.4 10.0 46 50
## 2 Honda Civic Small 8.4 12.1 15.8 42 46
## 3 Suzuki Swift Small 7.3 8.6 10.0 39 43
## 4 Pontiac LeMans Small 8.2 9.0 9.9 31 41
## 5 Saturn SL Small 9.2 11.1 12.9 28 38
## 6 Mazda 323 Small 7.4 8.3 9.1 29 37
- 위의 스크립트에 대한 결과(의 일부)는 다음과 같다.
- 첫 번째 정렬 조건인
MPG.Highway
의 내림차순으로 행들이 정렬되어 있음을 알 수 있다. 그런데MPG.highway
의 값이 같은 경우네는 두 번쨰 정렬 조건인Max.Price
의 오름차순으로 행들이 정렬되어 있다.
참고로, arrange()
함수 말고도 아래처럼 order()
함수를 사용해서 indexing 하는 방법도 있지만, 아무래도 arrange()
함수가 더 깔끔하고 해석하기에 좋다.
# order() 함수의 이용
<- Cars93[order(-Cars93_1$MPG.highway, Cars93_1$Max.Price), ]
b7 head(b7)
## Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
## 39 Geo Metro Small 6.7 8.4 10.0 46 50
## 42 Honda Civic Small 8.4 12.1 15.8 42 46
## 83 Suzuki Swift Small 7.3 8.6 10.0 39 43
## 73 Pontiac LeMans Small 8.2 9.0 9.9 31 41
## 79 Saturn SL Small 9.2 11.1 12.9 28 38
## 53 Mazda 323 Small 7.4 8.3 9.1 29 37
## AirBags DriveTrain Cylinders EngineSize Horsepower RPM Rev.per.mile
## 39 None Front 3 1.0 55 5700 3755
## 42 Driver only Front 4 1.5 102 5900 2650
## 83 None Front 3 1.3 70 6000 3360
## 73 None Front 4 1.6 74 5600 3130
## 79 Driver only Front 4 1.9 85 5000 2145
## 53 None Front 4 1.6 82 5000 2370
## Man.trans.avail Fuel.tank.capacity Passengers Length Wheelbase Width
## 39 Yes 10.6 4 151 93 63
## 42 Yes 11.9 4 173 103 67
## 83 Yes 10.6 4 161 93 63
## 73 Yes 13.2 4 177 99 66
## 79 Yes 12.8 5 176 102 68
## 53 Yes 13.2 4 164 97 66
## Turn.circle Rear.seat.room Luggage.room Weight Origin Make
## 39 34 27.5 10 1695 non-USA Geo Metro
## 42 36 28.0 12 2350 non-USA Honda Civic
## 83 34 27.5 10 1965 non-USA Suzuki Swift
## 73 35 25.5 17 2350 USA Pontiac LeMans
## 79 40 26.5 12 2495 USA Saturn SL
## 53 34 27.0 16 2325 non-USA Mazda 323