Patrick's 데이터 세상

데이터 마트 - plyr 본문

Programming/R

데이터 마트 - plyr

patrick610 2020. 6. 25. 00:19
반응형
SMALL

plyr은 데이터를 분리하고 처리한 다음, 다시 결합하는 등 가장 필수적인 데이터 처리 기능을 제공.
apply 함수와 multi-core 사용 함수를 이용하면 for loop를 사용하지 않고 매우 간단하고 빠르게 처리할 수 있다.
plyr은 apply 함수에 기반해 데이터와 출력변수를 동시에 배열로 치환하여 처리하는 패키지.

ply()함수는 앞에 두 개의 문자를 접두사로 가지는데. 첫 번째 문자는 입력하는 데이터 형태를 나타내고, 두 번째 문자는 출력하는 데이터 형태를 나타낸다.

※ 가장 흔하게 쓰이는 데이터 형태에 대한 문자

   1. d = 데이터 프레임 (data.frame)
   2. a = 배열 (array)
   3. l = 리스트 (list)

 

  데이터 프레임
(data.frame)
리스트
(list)
배열
(array)
데이터 프레임(data.frame) ddply ldply adply
리스트(list) dlply llply alply
배열(array) daply laply aaply

 

 

먼저 예제를 만들기 위해 난수로 d라는 데이터 프레임을 만든다.
year라는 변수에 2012부터 2014년까지의 데이터를 각각 6개씩 만들어 넣고, count라는 변수에 난수를 생성하는 runif함수와 반올림을 통해 정수화 시켜주는 round함수를 이용해 0에서 20 사이의 정수 중 9개를 저장한다.
set.seed 함수는 R에서 난수를 생성할 때 일정하게 고정시켜주는 역할을 한다.

 

set.seed(1)
d = data.frame(year = rep(2012:2014, each = 6), count = round(runif(9, 0, 20)))
print(d)

#Result

※ runif(생성할 난수의 개수, 최소값, 최대값)이다.

 

plyr 라이브러리를 설치하여 올리고, 데이터 프레임에서 데이터 프레임으로 입출력하는 함수인 ddply를 이용해 sd와 mean의 비율인 cv(coefficient of variation, 변동 계수)를 구하는 기능이다. 데이터 프레임 d를 인수로 입력받고 count의 mean과 sd를 구해 각각 저장한 다음에 cv를 구한다.
결과를 year별로 리턴하면서 데이터 프레임으로 생성.

library(plyr)
ddply(d, "year", function(x) {
mean.count = mean(x$count)
sd.count = sd(x$count)
cv = sd.count/mean.count
data.frame(cv.count = cv)
})

#Result

 

좀 더 복잡한 예제로 transform과 summarise를 동시에 사용하는 경우.
summarise 옵션을 이용하는 경우 count 변수에 명령된 평균이나 합 등을 계산해주고, 새로 생긴 변수만 보여준다.
transform 옵션은 summarise 옵션과는 달리 계산에 사용된 변수도 출력해 준다..

ddply(d, "year", summarise, mean.count = mean(count))

#Result

 

ddply(d, "year", transform, total.count = sum(count))

#Result

 

 

반응형
LIST

'Programming > R' 카테고리의 다른 글

결측값 처리, 이상값 검색  (0) 2020.06.25
데이터 마트 - 데이터 테이블  (0) 2020.06.25
데이터 마트 - sqldf를 이용한 데이터 분석  (0) 2020.06.25
데이터 마트 - R reshape  (0) 2020.06.25
R 그래픽 기능  (0) 2020.06.25
Comments