[R] Grouped weighted.mean

Chip Barnaby cbarnaby at wrightsoft.com
Wed May 28 16:30:41 CEST 2008


Dear all --

I want to compute weighted.mean() for grouped rows.

Data frame extract is just below.  For each Key, I want the mean of 
IAC weighted by Wt.

DP0[1:20,]
                                                             Key 
IAC        Wt
2   C3-PD030020050.PD030020050.3.12.3.0 0.765 0.8590000
3   C3-PD030020050.PD030020050.3.12.3.0 0.764 0.8449651
4   C3-PD030020050.PD030020050.3.12.3.0 0.760 0.8024975
5   C3-PD030020050.PD030020050.3.12.3.0 0.753 0.7326575
6   C3-PD030020050.PD030020050.3.12.3.0 0.743 0.6381150
7   C3-PD030020050.PD030020050.3.12.3.0 0.730 0.5187296
8   C3-PD030020050.PD030020050.3.12.3.0 0.714 0.3780000
65  C3-PD000000000.PD000000000.3.12.3.0 0.770 0.8590000
66  C3-PD000000000.PD000000000.3.12.3.0 0.770 0.8449651
67  C3-PD000000000.PD000000000.3.12.3.0 0.771 0.8024975
68  C3-PD000000000.PD000000000.3.12.3.0 0.772 0.7326575
69  C3-PD000000000.PD000000000.3.12.3.0 0.774 0.6381150
70  C3-PD000000000.PD000000000.3.12.3.0 0.777 0.5187296
71  C3-PD000000000.PD000000000.3.12.3.0 0.780 0.3780000
128 C3-PD000020000.PD000020000.3.12.3.0 0.685 0.8590000
129 C3-PD000020000.PD000020000.3.12.3.0 0.685 0.8449651
130 C3-PD000020000.PD000020000.3.12.3.0 0.684 0.8024975
131 C3-PD000020000.PD000020000.3.12.3.0 0.682 0.7326575
132 C3-PD000020000.PD000020000.3.12.3.0 0.679 0.6381150
133 C3-PD000020000.PD000020000.3.12.3.0 0.675 0.5187296


mean -- works OK

 > MN = by( DP0$IAC, DP0$Key, mean)


weighted.mean -- no go due to length of Wt

 > WMN = by( DP0$IAC, DP0$Key, weighted.mean, DP0$Wt)
Error in FUN(data[x, ], ...) : 'x' and 'w' must have the same length


So I tried tapply() -- same result

 > WMN = tapply( DP0, DP0$Key, function(x) weighted.mean( x$IAC, x$Wt))
Error in tapply(DP0, DP0$Key, function(x) weighted.mean(x$IAC, x$Wt)) :
         arguments must have same length


How does one pass grouped arguments to processing functions such as 
weighted.mean() ?

TIA,

Chip Barnaby








---------------------------------------------------------
Chip Barnaby                   cbarnaby at wrightsoft.com
Vice President of Research
Wrightsoft Corp.               781-862-8719 x118 voice
131 Hartwell Ave               781-861-2058 fax
Lexington, MA 02421         www.wrightsoft.com



More information about the R-help mailing list