[R] Calculate weighted mean for each group

David Freedman 3.14david at gmail.com
Fri Jul 24 00:36:45 CEST 2009


After you fix your data frame and if you don't using 2 packages, you might
try something like:

lib(plyr) #for 'by' processing
lib(Hmisc) # for its wtd.mean function
d=data.frame(x=c(15,12,3,10,10),g=c(1,1,2,2,3),w=c(2,1,5,2,5)) ; d
ddply(d,~g,function(df) wtd.mean(df$x,df$w))



milton ruser wrote:
> 
> try your first "reproducible line" first :-)
> 
> 
> 
> On Thu, Jul 23, 2009 at 5:18 PM, Alexis Maluendas
> <avmaluendasp at gmail.com>wrote:
> 
>> Hi R experts,
>>
>> I need know how calculate a weighted mean by group in a data frame. I
>> have
>> tried with aggragate() function:
>>
>> data.frame(x=c(15,12,3,10,10),g=c(1,1,1,2,2,3,3),w=c(2,3,1,5,5,2,5)) -> d
>> aggregate(d$x,by=list(d$g),weighted.mean,w=d$w)
>>
>> Generating the following error:
>>
>> Error en FUN(X[[1L]], ...) : 'x' and 'w' must have the same length
>>
>> Thanks in advance
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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<http://www.r-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>>
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/Calculate-weighted-mean-for-each-group-tp24634873p24635837.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list