본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 162. 데이터프레임 특정 열을 기준으로 오름차순, 내림차순 정렬하기

by 만다린망고 2023. 8. 29.
반응형

데이터프레임을 오름차순 또는 내림차순으로 정렬할 때는 order 라는 함수가 사용됩니다. 먼저 order 함수를 이해해봅시다. 

 

1. order 함수와 벡터의 오름차순,내림차순 정렬

아래와 같이 벡터를 두개 정의합시다. 

v1=c(1,2,1,3,2)
v2=c(20,10,10,10,30)


v1에 order 함수를 적용해봅시다. 

> order(v1)
[1] 1 3 2 5 4


v1을 오름차순 정렬 했을 때, 각 원소가 몇번 째 오게 되는지를 반환합니다. 만약 order(v1)의 결과를 아래와 같이 인덱스로 사용한다면, 오름차순으로 정렬하는 효과를 얻습니다. 

> v1[order(v1)]
[1] 1 1 2 2 3


내림차순 정렬은 아래와 같이 하면 됩니다. 

> v1[order(v1,decreasing=TRUE)]
[1] 3 2 2 1 1

 

이 원리를 데이터프레임에도 적용하면 됩니다. 

 

2. 데이터프레임의 오름차순,내림차순 정렬

아래와 같이 데이터프레임을 하나 만들어줍시다. 

v1=c(1,2,1,3,2)
v2=c(20,10,10,10,30)

df=data.frame(v1,v2)

 

> df
  v1 v2
1  1 20
2  2 10
3  1 10
4  3 10
5  2 30

 

v1을 기준으로 오름차순 정렬하는 방법은 아래와 같습니다. 행의 순서를 바꾸는 것이므로 인덱싱 대괄호의 행의 자리에 order 함수 결과를 넣어줍니다. 

 

> df[order(v1),]
  v1 v2
1  1 20
3  1 10
2  2 10
5  2 30
4  3 10

 

만약 v1을 기준으로 오름차순 정렬한 상태에서, v2를 기준으로도 오름차순 정렬하고 싶다면 아래와 같이 하면 됩니다. 

> df[order(v1,v2),]
  v1 v2
3  1 10
1  1 20
2  2 10
5  2 30
4  3 10

 

반응형

댓글