[R] aggregate, by tapply

Thomas Lumley tlumley at u.washington.edu
Thu Jan 24 17:34:24 CET 2002


On Thu, 24 Jan 2002, Petr Pikal wrote:

> Dear R users
>
> I searched some sources but i did not find an answer.Please give
> me some hint to following problem.
>
> I would like to compute a summary statistic for some vector for
> different factor levels. I know I can use tapply or aggregate but I
> do not know if there is a way how to use function with several
> (two) variable input (like weighted.mean).
>
> I wrote a simple a function for factor weighted mean
> fff<-function(x,fact,w)
> {
> ws<-tapply(w,fact,sum)
> newx<-x*w
> tapply(newx,fact,sum)/ws
> }
>
> which can handle particular case but does exist some more general
> solution how to use FUN(X1,X2) in aggregation procedures
> (tapply, aggregate, by) directly?

If all your variables are in some data frame df you can do

by(df, df$fact, function(df.i) weighted.mean(df.i$x,df.i$w))

	-thomas

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list