orderBy()
orderBy( )는 데이터 프레임을 정렬하는 목적으로 사용한다. 다른 함수들과 다르게 데이터를 그룹으로 묶는 기능은 없다. orderBy( ) 역시 base 패키지의 order( ) 함수에 대응한다. 이 두 가지 함수를 표 4-19에 정리했다.
base::order : 데이터를 정렬하기 위한 순서를 반환한다. |
order( ..., # 정렬할 데이터 # na.last는 NA 값을 정렬한 결과의 어디에 둘 것인지를 제어한다. 기본값인 na.last=TRUE는 # NA 값을 정렬한 결과의 마지막에 둔다. na.last=FALSE는 정렬한 값의 처음에 둔다. # na.last=NA는 NA 값을 정렬 결과에서 제외한다. na.last=TRUE, decreasing=FALSE # 내림차순 여부 ) 반환 값은 원 데이터에 지정하면 정렬된 결과가 나오도록 하는 색인이다. |
doBy::orderBy : 포뮬러에 따라 데이터를 정렬한다. |
doBy::orderBy( formula, # 정렬할 기준을 지정한 포뮬러 # ~의 좌측은 무시하며, ~ 우측에 나열한 이름에 따라 데이터가 정렬된다. data, # 정렬할 데이터 ) 반환 값은 order( )와 동일하다. |
order( ) 함수는 주어진 값을 정렬하기 위한 색인을 순서대로 반환하는데, 이를 사용해 정렬된 결과를 얻을 수 있다. 다음 예는 아이리스 데이터를 Sepal.Length에 따라 정렬했을 때 61행이 가장 처음, 63행이 두 번째, 69행이 세 번째 등에 해당함을 보여준다.
> order(iris$Sepal.Width)
[1] 61 63 69 120 42 ...
...
이 순서를 데이터 프레임의 각 행에 대한 색인으로 사용하면 정렬된 결과를 얻을 수 있다.
> iris[order(iris$Sepal.Width),]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
61 5.0 2.0 3.5 1.0 versicolor
63 6.0 2.2 4.0 1.0 versicolor
...