ddply()

    ddply( )는 데이터 프레임(d)을 입력으로 받아 데이터 프레임(d)을 내보내는 함수다.

    표 5-4 ddply( ) 함수

    plyr::ddply : 데이터 프레임을 분할하고 함수를 적용한 뒤 결과를 데이터 프레임으로 반환한다.

    plyr::ddply(
      .data,
      .variables,  # 데이터를 그룹 지을 변수명
      .fun=NULL
    )

    반환 값은 데이터 프레임이다.

    adply( )와 ddply( )의 가장 큰 차이점이라면 adply( )는 행 또는 컬럼 단위로 함수를 적용하는 반면 ddply( )는 .variables에 나열한 컬럼에 따라 데이터를 나눈 뒤 함수를 적용한다는 점이다.

    다음은 iris 데이터에서 Sepal.Length의 평균을 Species별로 계산하는 예다. 두 번째 인자인 데이터를 그룹 짓는 변수는 .( ) 안에 기록한다.

    > ddply(iris,
    +       .(Species),
    +       function(sub) {
    +         data.frame(sepal.width.mean=mean(sub$Sepal.Width))})
         Species sepal.width.mean
    1     setosa            3.428
    2 versicolor            2.770
    3  virginica            2.974
    

    여러 변수로 그룹을 짓고자 한다면 .( ) 안에 조건들 또는 컬럼명들을 콤마로 구분해서 나열한다. 다음은 붓꽃의 종과 Sepal.Length가 5.0보다 큰지 여부 두 가지 조건으로 데이터를 그룹 지은 뒤 각 그룹마다 Sepal.Width의 평균을 계산한 예다.

    > ddply(iris,
    +       .(Species, Sepal.Length > 5.0),
    +       function(sub) {
    +           data.frame(sepal.width.mean=mean(sub$Sepal.Width))})
         Species Sepal.Length > 5 sepal.width.mean
    1     setosa            FALSE         3.203571
    2     setosa             TRUE         3.713636
    3 versicolor            FALSE         2.233333
    4 versicolor             TRUE         2.804255
    5  virginica            FALSE         2.500000
    6  virginica             TRUE         2.983673
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.