[R] FUN argument to return a vector in aggregate function

Gabor Grothendieck ggrothendieck at gmail.com
Mon Nov 23 14:14:51 CET 2009


Try this:

> library(doBy)
> summaryBy(breaks ~ ., warpbreaks, FUN = c(mean, sum, length))

  wool tension breaks.mean breaks.sum breaks.length
1    A       L    44.55556        401             9
2    A       M    24.00000        216             9
3    A       H    24.55556        221             9
4    B       L    28.22222        254             9
5    B       M    28.77778        259             9
6    B       H    18.77778        169             9

On Mon, Nov 23, 2009 at 3:15 AM, utkarshsinghal
<utkarsh.singhal at global-analytics.com> wrote:
> Hi All,
>
> I am currently doing the following to compute summary statistics of
> aggregated data:
> a = aggregate(warpbreaks$breaks, warpbreaks[,-1], mean)
> b = aggregate(warpbreaks$breaks, warpbreaks[,-1], sum)
> c = aggregate(warpbreaks$breaks, warpbreaks[,-1], length)
> ans = cbind(a, b[,3], c[,3])
>
> This seems unnecessarily complex to me so I tried
>> aggregate(warpbreaks$breaks, warpbreaks[,-1], function(z)
>> c(mean(z),sum(z),length(z)))
> but aggregate doesn't allow FUN argument to return a vector.
>
> I tried "by", "tapply" and several other functions as well but the output
> needed further modifications to get the same format as "ans" above.
>
> Is there any other function same as aggregate which allow FUN argument to
> return vector.
>
> Regards
> Utkarsh
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>




More information about the R-help mailing list