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

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