더북(TheBook)

여러 컬럼을 기준으로 데이터를 정렬하고자 한다면 해당 컬럼들을 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( )보다 번거로워 보이지만 기본 패키지 함수기 때문에 자주 사용한다.

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