데이터프레임의 row기준으로 정렬하는 예제는 많지만 column인 변수 기준으로 정렬하는 예제는 많지 않다. 변수가 많은 경우 한 번에 처리하는 방법을 초급/중급/고급 으로 나누어서 알아보자.
예를 들어 다음과 같은 데이터프레임이 있다고 하자.
1 | df = data.frame(b = 1:3, |
초급
변수를 a, b, c 로 정렬하려면 매우 간단하게 다음과 같이 할 수 있다.
1 | df[, c(3, 1, 2)] |
중급
하지만 변수가 매우 많을 때는 이렇게 손으로 할 수 없다는 것이 문제다. 보통 row를 정렬할 때는 order()
함수를 사용하지만, column을 정렬할 때에도 사용할 수 있다는 것을 아는 사람은 그렇게 많지 않다.
1 | colnames(df) |
고급
단순히 변수명이 아니라 변수에 있는 특정 값을 기준으로 정렬을 하려면 어떻게 할까?
다음과 같이 apply()
함수 또는 sapply()
함수로 변수별 일괄 계산을 하여 그 값을 토대로 변수를 정렬 할 수 있겠다. 여기서는 별도의 사용자 정의 함수를 사용하지는 않았고, 각 변수의 원소 합 기준으로 그 합이 가장 큰 변수를 가장 왼쪽에 위치시키는 식으로 정렬하였다.
1 | sapply(df, FUN = "sum") |