ddply()
ddply( )는 데이터 프레임(d)을 입력으로 받아 데이터 프레임(d)을 내보내는 함수다.
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