聚合均值并保持 N

aggregate means and keep N

我正在尝试 aggregate 一个数据集,但我还想保留观测值的数量。所以我所拥有的与此类似:

aggregate(iris$Sepal.Length, by=list(iris$Species), FUN=mean)

但是 returns 一个像这样的对象:

 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