본문 바로가기

배우기/복습노트[R과 분석]

[복습] R(programming language) 그룹 연산 정리(aggregate, ddply)

728x90
반응형

https://metime.tistory.com/142

 

[복습] R(programming language) Group by 연산 함수(tapply, aggregate, ddply) + 하루끝(20231201)

SQL에서 group by 연산처럼 수행을 도와주는 형태가 R에는 함수로 존재한다. 우선 group by 연산은 분리(그룹별) - 연산(적용) - 결합 의 매커니즘으로 구성되어 있다. 세 가지 정도 소개하려고 한다. 1.

metime.tistory.com

 

여기서 배운 그룹 연산을 정리해보도록 하겠다.

 

tappy는 데이터 프레임으로 output이 출력되지 않기 때문에 잘 사용하지 않으므로 넘어가겠다.

 

 

1. aggregate 1번 문법

  - 연산 대상 컬럼이 많을 경우 유리하다.

  - 외부 객체를 사용할 수 있다.

  - 여러 연산함수 전달이 불가하다(ddply 사용 가능).

 

aggregate(emp[,-1], list(emp$DEPTNO), max)

aggregate(emp[,c(‘SAL’, ‘COMM’, ‘EMPNO’)], list(emp$DEPTNO), mean)

 

이러한 형식으로 사용이 가능하다.

 

 

2. aggregate 2번 문법

  - 연산 대상을 일일이 cbind로 묶어야 한다.

  - 외부 객체 전달이 불가하다.

  - 가독성이 좋은 문법이다.

  - 여러 연산함수 전달이 불가하다(ddply 사용 가능)

 

aggregate(cbind(SAL, COMM, EMPNO) ~ DEPTNO, emp, mean)

 

이런 형식으로 사용이 가능하다.

 

728x90

 

 

3. plyr::ddply

  - 가급적 단순한 연산에 대한 그룹핑을 한다.

  - transform() 기능 사용이 가능하다.

  - subset 기능 사용이 가능하다.

  - 여러 연산 함수 전달이 가능하다.

아래는 tranform과 subset의 연산 결과 차이를 보여준다.

 

wide 데이터의 경우 aggregate가 유리한 경우가 많다.

 

728x90
반응형