10 | 그룹별 연산
doBy가 데이터를 그룹별로 나눈 후 특정 계산을 적용하기 위한 함수들의 패키지인 반면 aggregate( )는 좀 더 일반적인 그룹별 연산을 위한 함수다. aggregate( )를 사용하면 데이터를 그룹으로 묶은 후 임의의 함수를 그룹에 적용할 수 있다.
aggregate : 데이터를 분할하고 각 그룹마다 요약치를 계산한다. |
aggregate( x, # R 객체 by, # 그룹으로 묶을 값의 리스트 FUN # 그룹별로 요약치 계산에 사용할 함수 ) aggregate( formula, # y ~ x 형태로 y는 계산에 사용될 값이며, x는 그룹으로 묶을 때 사용할 기준값 data, # formula를 적용할 데이터 FUN ) 입력이 데이터 프레임인 경우, 반환 값은 그룹 값과 그룹의 요약치를 저장한 데이터 프레임이다. |
이 절에서는 aggregate( )에 포뮬러를 적용한 형태의 예를 살펴본다. 다음은 아이리스 데이터에서 종별 Sepal.Width의 평균 길이를 구하는 예다.
> aggregate(Sepal.Width ~ Species, iris, mean)
Species Sepal.Width
1 setosa 3.428
2 versicolor 2.770
3 virginica 2.974
같은 일을 tapply( )를 통해서 수행하면 다음과 같다.
> tapply(iris$Sepal.Length, iris$Species, mean)
setosa versicolor virginica
5.006 5.936 6.588
얻는 결과는 같지만 포뮬러를 사용한 aggregate( ) 쪽이 코드 작성하기 편리하다.