[R] Using weighted.mean() in aggregate()
Aleksey Naumov
naumov at acsu.buffalo.edu
Sun Jun 22 02:27:27 CEST 2003
Dear R users, I have a question on using weighted.mean() while aggregating a
data frame. I have a data frame with columns Sub, Length and Slope:
> x[1:5,]
Sub Length Slope
1 2 351.547 0.0025284969
2 2 343.738 0.0025859390
3 1 696.659 0.0015948968
4 2 5442.338 0.0026132544
5 1 209.483 0.0005304225
and I would like to calculate the weighted.mean of Slope, using Length as
weights, for each value of Sub. The obvious way:
> aggregate(list(Mean.Slope=x$Slope), by=list(Sub=x$Sub), FUN=weighted.mean,
w=x$Length)
does not work. weighted.mean() generates warnings that "longer object length
is not a multiple of shorter object length in: x * w", from which I conclude
that weights are not supplied as I intend, instead each subset of Sub, when
passed to weighted.mean(), receives the whole x$Length as weights, which is
not correct.
Is there an elegant way to do this, or do I have to have a loop here?
Thank you,
Aleksey
--
Aleksey Naumov
GIS Analyst
Center for Health and Social Research
Buffalo State College
More information about the R-help
mailing list