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()
함수는 주어진 벡터가 오름차순이 되도록 하는 데이터의 넘버를 반환해준다.
위의 예시를 보면 가장 작은 것이 다섯번째에 위치한 $-1$ 이므로 $-1$ 의 넘버인 $5$ 가 제일 앞으로 오고, 두번째로 작은것이 네번째에 위치한 $0$ 이므로 $0$ 의 넘버인 $4$ 가 두번째로 온다. 같은 방법으로 벡터의 모든 컴포넌트에 대해 계산해보면 앞에서부터 오름차순으로 ‘위치’의 벡터를 얻는다.
이를 다음과 같이 응용하면 사실상 sort()
함수와 같은 결과를 얻을 수 있다.
이 방법이 일반적인 소팅과 다른 점은 구체적으로 행의 번호를 참조함으로써 얻었으므로 데이터 프레임에 적용할 수 있다는 점이다. 다음의 예시를 보자.
위는 Petal.Length
를 기준으로 iris
데이터를 소팅한 것이다. order()
함수에 의해 Petal.Length
가 소팅될 수 있는 벡터를 얻고, 그 순서대로 iris
데이터를 참조함으로써 사실상 열기준으로 정렬된 새 데이터 프레임을 얻는 원리다.