더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.