R 에서 데이터 프레임 열기준으로 정렬하는 법

R 에서 데이터 프레임 열기준으로 정렬하는 법

개요

R 에서 데이터를 정렬하는 것 자체는 sort() 함수를 사용하면 간단하게 할 수 있으나, 기본적으로 sort() 함수는 벡터만을 소팅한다. 그러나 실제로는 데이터 프레임의 수많은 카테고리를 다루기 때문에 열 단위로도 정렬할 수 있는 방법이 필요한 경우가 많다.

코드

x<-c(pi,3,99,0,-1)
order(x)
 
x[order(x)]
 
head(iris)
head(iris[order(iris$Petal.Length),])

order() 함수는 주어진 벡터가 오름차순이 되도록 하는 데이터의 넘버를 반환해준다.

20190415\_132452.png

위의 예시를 보면 가장 작은 것이 다섯번째에 위치한 $-1$ 이므로 $-1$ 의 넘버인 $5$ 가 제일 앞으로 오고, 두번째로 작은것이 네번째에 위치한 $0$ 이므로 $0$ 의 넘버인 $4$ 가 두번째로 온다. 같은 방법으로 벡터의 모든 컴포넌트에 대해 계산해보면 앞에서부터 오름차순으로 ‘위치’의 벡터를 얻는다.

이를 다음과 같이 응용하면 사실상 sort() 함수와 같은 결과를 얻을 수 있다.

20190415\_132618.png 이 방법이 일반적인 소팅과 다른 점은 구체적으로 행의 번호를 참조함으로써 얻었으므로 데이터 프레임에 적용할 수 있다는 점이다. 다음의 예시를 보자.

20190415\_132659.png

위는 Petal.Length를 기준으로 iris 데이터를 소팅한 것이다. order() 함수에 의해 Petal.Length가 소팅될 수 있는 벡터를 얻고, 그 순서대로 iris 데이터를 참조함으로써 사실상 열기준으로 정렬된 새 데이터 프레임을 얻는 원리다.

댓글