여러 컬럼을 기준으로 데이터를 정렬하고자 한다면 해당 컬럼들을 order( )에 나열한다. 다음은 Sepal.Length, Sepal.Width 순으로 데이터를 정렬한 예다.

    > iris[order(iris$Sepal.Length, iris$Sepal.Width), ]
       Sepal.Length Sepal.Width Petal.Length Petal.Width  Species
    14          4.3         3.0          1.1         0.1   setosa
    9           4.4         2.9          1.4         0.2   setosa
    39          4.4         3.0          1.3         0.2   setosa
    43          4.4         3.2          1.3         0.2   setosa
    42          4.5         2.3          1.3         0.3   setosa
    ...
    

    orderBy( )는 order( )와 유사하지만 정렬할 데이터를 포뮬러로 지정할 수 있다는 점이 편리하다. 다음 예는 모든 데이터를 Sepal.Width로 배열한다. orderBy( )에서 ~의 좌측은 무시하므로 적지 않는다.

    > orderBy(~ Sepal.Width, iris)
       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
    69          6.2         2.2          4.5         1.5 versicolor
    120         6.0         2.2          5.0         1.5 virginica
    42          4.5         2.3          1.3         0.3    setosa
    ...
    

    다음은 모든 데이터를 Species, Sepal.Width 순으로 정렬한 예다. 데이터가 먼저 Species 순으로 정렬되고 그 안에서 다시 Sepal.Width로 정렬되었음을 알 수 있다.

    > orderBy(~ Species + Sepal.Width, iris)
        Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    42           4.5         2.3          1.3         0.3     setosa
    9            4.4         2.9          1.4         0.2     setosa
    ...
    34           5.5         4.2          1.4         0.2     setosa
    16           5.7         4.4          1.5         0.4     setosa
    61           5.0         2.0          3.5         1.0 versicolor
    63           6.0         2.2          4.0         1.0 versicolor
    ...
    57           6.3         3.3          4.7         1.6 versicolor
    86           6.0         3.4          4.5         1.6 versicolor
    120          6.0         2.2          5.0         1.5  virginica
    107          4.9         2.5          4.5         1.7  virginica
    ...
    118          7.7         3.8          6.7         2.2  virginica
    132          7.9         3.8          6.4         2.0  virginica
    

    order( )가 orderBy( )보다 번거로워 보이지만 기본 패키지 함수기 때문에 자주 사용한다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.