R 聚合意味着保持N

R 聚合意味着保持N,r,aggregate,R,Aggregate,我试图聚合一个数据集,但我想保留观察的数量。因此,我得到的与此类似: aggregate(iris$Sepal.Length, by=list(iris$Species), FUN=mean) 但它返回的对象如下所示: Group.1 x 1 setosa 5.006 2 versicolor 5.936 3 virginica 6.588 当我想要的是这一点,以及每组的观察数(行)(在单独的列中)反复试验表明这是可行的: FUN = function(x) c(m =

我试图聚合一个数据集,但我想保留观察的数量。因此,我得到的与此类似:

aggregate(iris$Sepal.Length, by=list(iris$Species), FUN=mean)
但它返回的对象如下所示:

 Group.1     x
1     setosa 5.006
2 versicolor 5.936
3  virginica 6.588

当我想要的是这一点,以及每组的观察数(行)(在单独的列中)

反复试验表明这是可行的:

FUN = function(x) c(m = mean(x), n = length(x))
在诸如dplyr和data.table之类的包中还有其他方法可以做到这一点。

dplyr和hadley ftw

grp <- group_by(iris, Species)
summarise(grp, avg = mean(Sepal.Length), n =n ())

Source: local data frame [3 x 3]
     Species   avg  n
1     setosa 5.006 50
2 versicolor 5.936 50
3  virginica 6.588 50

grp啊哈!我知道有一个简单的方法。就是想不起来!谢谢,@Frank谢谢你提醒我,@Pierrela谢谢。我不经常使用dplyr,但我的理解是,不能用用户编写的函数来总结组,对吗?实际上,我使用的是我编写的函数,而不是
mean
。将summary()与聚合函数一起使用,聚合函数获取值向量,并返回单个数字。只要你填补了这个类别,你就没事了。啊,明白了。这是有道理的。我在别处读到的东西似乎表明,摘要只具有某些预定义的功能。这一定是他们所引用的。@Alex data.table操作不幸地将一列命名为“mean”,这使它有点混乱。这使得向量返回而不是标量/单个值变得有趣。