2014-09-22 2 views
1
Aaa <- data.frame(amount=c(1,2,1,2,1,1,2,2,1,1,1,2,2,2,1), 
        card=c("a","b","c","a","c","b","a","c","b","a","b","c","a","c","a")) 

aggregate(x=Aaa$amount, by=list(Aaa$card), FUN=mean) 

## Group.1 x 
## 1  a 1.50 
## 2  b 1.25 
## 3  c 1.60 

tapply(Aaa$amount, Aaa$card, mean) 

## a b c 
## 1.50 1.25 1.60 

위 코드 예입니다.R의 tapply와 aggregate의 차이점은 무엇입니까?

aggregatetapply은 모두 매우 편리하며 유사한 기능을 수행합니다.

누군가가 자신의 차이점에 대해 설명하거나 예제를 제공 할 수 있습니까?

+1

방금 ​​예제를 제공했습니다. 그들을 검사하십시오. 출력을 변수에 저장하면'class','summary' 및 구조체 ('str')를 처음부터 볼 수 있습니다. – John

답변

10

aggregate은 하나의 함수로 여러 열에서 작동하고 aech 범주에 대해 하나의 행을 가진 데이터 프레임을 반환하도록 디자인되었으며 tapply은 결과가 행렬 또는 배열로 반환 된 단일 벡터에서 작동하도록 설계되었습니다. 2 열 매트릭스를 사용하는 것만으로는 두 기능의 용량 (또는 그 두드러진 차이점)을 입증 할 수 없습니다. `aggregate에는 공식 메소드도 있습니다.

> Aaa <- data.frame(amount=c(1,2,1,2,1,1,2,2,1,1,1,2,2,2,1), cat=sample(letters[21:24], 15,rep=TRUE), 
+     card=c("a","b","c","a","c","b","a","c","b","a","b","c","a","c","a")) 
> with(Aaa, tapply(amount, INDEX=list(cat,card), mean)) 
    a b c 
u 1.5 1.5 NA 
v 2.0 1.0 2.0 
w 1.0 NA 1.5 
x 1.5 NA 1.5 

> aggregate(amount~cat+card, data=Aaa, FUN= mean) 
    cat card amount 
1 u a 1.5 
2 v a 2.0 
3 w a 1.0 
4 x a 1.5 
5 u b 1.5 
6 v b 1.0 
7 v c 2.0 
8 w c 1.5 
9 x c 1.5 

xtabs 기능은 또한 R "테이블"을 제공하며 수식 인터페이스를 제공합니다. R 표는 한계 범주의 교차 분류에서 항목의 수를 보유하는 "우연성 표"로 설계되기 때문에 일반적으로 정수 값을 갖는 행렬입니다.