我可以将aggregate()
与更多功能一起使用,以便将聚合存储为单独的列而不是矩阵的一部分吗?我希望数据列的列为Group.1, cyl.1, cyl.2
,而不是Group.1, cyl
。
# Only one function
> aggdata <-aggregate(mtcars["cyl"], by=list(vs), FUN=mean, na.rm=TRUE)
> aggdata
Group.1 cyl
1 0 7.444444
2 1 4.571429
> str(aggdata)
'data.frame': 2 obs. of 2 variables:
$ Group.1: num 0 1
$ cyl : num 7.44 4.57
>
# Two functions
> aggdata <-aggregate(mtcars["cyl"], by=list(cyl), FUN=function(x) c(length(x),mean(x)))
> aggdata
Group.1 cyl.1 cyl.2
1 4 11 4
2 6 7 6
3 8 14 8
> str(aggdata)
'data.frame': 3 obs. of 2 variables:
$ Group.1: num 4 6 8
$ cyl : num [1:3, 1:2] 11 7 14 4 6 8
> aggdata$cyl
[,1] [,2]
[1,] 11 4
[2,] 7 6
[3,] 14 8
最佳答案
将其包装在do.call(data.frame, ...)
中:
aggdata <-aggregate(mtcars["cyl"], by=list(mtcars$cyl),
FUN=function(x) c(length(x),mean(x)))
do.call(data.frame, aggdata)
# Group.1 cyl.1 cyl.2
# 1 4 11 4
# 2 6 7 6
# 3 8 14 8
str(do.call(data.frame, aggdata))
# 'data.frame': 3 obs. of 3 variables:
# $ Group.1: num 4 6 8
# $ cyl.1 : num 11 7 14
# $ cyl.2 : num 4 6 8
经过一番搜索,我才发现the source of my answer。还有其他一些与此类似的问题,但这是我学习
do.call(data.frame, ...)
方法的地方。(请记住,@ James添加了与我相同的答案并删除了他的...之后要搜索的内容。)
关于r - 具有更多功能的Aggregate()-,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17659698/