tapply和aggregate在R中的区别是什么? Aaa
tapply和aggregate在R中的区别是什么? Aaa,r,aggregate,tapply,R,Aggregate,Tapply,aggregate设计用于使用一个函数处理多个列,并为每个类别返回一行数据帧,而tapply设计用于处理单个向量,结果返回为矩阵或数组。仅使用两列矩阵并不能真正证明两种功能的能力(或其显著差异)aggregate还有一个公式方法,而tapply没有 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","
aggregate
设计用于使用一个函数处理多个列,并为每个类别返回一行数据帧,而tapply
设计用于处理单个向量,结果返回为矩阵或数组。仅使用两列矩阵并不能真正证明两种功能的能力(或其显著差异)aggregate
还有一个公式方法,而tapply
没有
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
>Aaa(Aaa,tapply(金额,指数=列表(类别,卡片),平均值))
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
>合计(金额~cat+卡,数据=Aaa,乐趣=平均值)
信用卡金额
1 u a 1.5
2 v a 2.0
3 w a 1.0
4x1.5
5 u b 1.5
6vb1.0
7v2.0
8 w c 1.5
9x1.5
xtabs
函数还提供了一个R“表”,它有一个公式接口。R表是通常具有整数值的矩阵,因为它们被设计为“列联表”,包含边缘类别交叉分类中的项目计数。您刚才给出了示例。检查它们。如果将输出保存在变量中,您可以查看类
,摘要
,以及结构(str
)。
> 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