더북(TheBook)

03 | 분할, 적용, 재조합을 통한 데이터 분석

plyr 패키지[3]는 데이터를 분할하고split, 분할된 데이터에 특정 함수를 적용한 뒤apply, 그 결과를 재조합combine하는 세 단계로 데이터를 처리하는 함수들을 제공한다. plyr의 입력은 배열, 데이터 프레임, 리스트가 될 수 있다. 출력 역시 배열, 데이터 프레임, 리스트가 될 수 있으며 아무런 결과도 출력하지 않을 수도 있다.

plyr은 데이터의 분할, 계산, 조합을 한 번에 처리해주어 여러 함수로 처리해야 할 일을 짧은 코드로 대신해준다. 뿐만 아니라 입력과 출력에서 다양한 데이터 타입을 지원해주어 데이터 변환의 부담을 크게 덜어준다.

plyr의 데이터 처리 함수들은 {adl}{adl_}ply 형태의 5글자 함수명을 사용한다. 첫 번째 글자는 입력 데이터 타입에 따라 각각 배열(a), 데이터 프레임(d), 리스트(l)로 정해진다. 두 번째 글자는 출력 데이터 타입으로 a, d, l 또는 _로 정해지는데 이 중 _는 아무런 출력도 내보내지 않음을 뜻한다. 예를 들어, adply( )는 입력이 배열, 출력이 데이터 프레임이다. 한편 llply( )는 입력과 출력이 리스트다. 다음은 plyr의 형태와 의미를 정리한 것이다.

문자

용도

의미

a

입력, 출력

배열

d

입력, 출력

데이터 프레임

l

입력, 출력

리스트

_

출력

아무런 출력도 없음

plyr에는 이외에도 데이터 프레임 또는 배열을 입력으로 받고 a, d, p, _ 유형의 출력을 지원하는 m{adp_}ply( ) 형태의 특별한 함수들이 있다. 이 함수들은 ‘4.4 apply 계열 함수’ 절에서 설명한 mapply( )와 유사하게 다수의 인자를 함수에 넘겨 처리하는 함수지만 출력을 좀 더 유연하게 지정할 수 있는 점이 다르다.

이 절에서는 plyr의 함수들 중 가장 유용한 adply( ), ddply( ), mdply( )에 대해 설명한다. 또, 각 그룹의 계산을 도와주는 유틸리티 함수인 transform( ), mutate( ), summarise( ), subset( )에 대해서 알아본다.

먼저 plyr 패키지를 설치하고 로드한다.

> install.packages("plyr")
> library(plyr)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.