더북(TheBook)

10 | 그룹별 연산

doBy가 데이터를 그룹별로 나눈 후 특정 계산을 적용하기 위한 함수들의 패키지인 반면 aggregate( )는 좀 더 일반적인 그룹별 연산을 위한 함수다. aggregate( )를 사용하면 데이터를 그룹으로 묶은 후 임의의 함수를 그룹에 적용할 수 있다.

표 4-31 그룹별 연산

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( ) 쪽이 코드 작성하기 편리하다.

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