what about using "mapply"? splitted.value<-with(x.1, split(VALUE, GROUP)) splitted.freq<-with(x.1, split(FREQUENCY, GROUP)) mapply(weighted.mean, splitted.value, w=splitted.freq) Stefano >-----Messaggio originale----- >Da: r-help-bounces at stat.math.ethz.ch >[mailto:r-help-bounces at stat.math.ethz.ch]Per conto di >james.holtman at convergys.com >Inviato: mercoled?? 25 maggio 2005 17.57 >A: Dan Bolser >Cc: R mailing list; r-help-bounces at stat.math.ethz.ch >Oggetto: Re: [R] weighted.mean and tapply (again) > > > > > > >> x.1 <- read.table('clipboard',header=T) >> x.1 > GROUP VALUE FREQUENCY >1 2 2 78 >2 2 3 40 >3 2 4 16 >4 2 5 3 >5 2 6 1 >6 2 8 1 >7 3 3 19 >8 3 4 10 >9 3 5 19 >10 3 6 4 >> by(x.1, x.1$GROUP, function(x) weighted.mean(x$VALUE, >x$FREQUENCY)) >x.1$GROUP: 2 >[1] 2.654676 >------------------------------------------------------------ >--------------- >x.1$GROUP: 3 >[1] 4.153846 >> > >Jim >__________________________________________________________ >James Holtman "What is the problem you are trying to solve?" >Executive Technical Consultant -- Office of Technology, Convergys >james.holtman at convergys.com >+1 (513) 723-2929 > > > > > > Dan Bolser > > > <dmb at mrc-dunn.cam.ac. To: > R mailing list <r-help at stat.math.ethz.ch> > > uk> cc: > > > Sent by: Subject: > [R] weighted.mean and tapply (again) > > r-help-bounces at stat.m > > > ath.ethz.ch > > > > > > > > > 05/25/2005 11:33 > > > > > > > > > > >I read answers to questions including the words "tapply" and >"weighted.mean", but I didn't understand either the problem >(data) or the >solution provided. > >Here is my question ... > >> dat[1:10,] > GROUP VALUE FREQUENCY >1 2 2 78 >2 2 3 40 >3 2 4 16 >4 2 5 3 >5 2 6 1 >6 2 8 1 >7 3 3 19 >8 3 4 10 >9 3 5 19 >1 3 6 4 > > >For each GROUP, I would like to calculate the weighted.mean >of VALUE using >the FREQUENCY as the weight, so for the snippet of data >shown that would >be... > >group.2 <- weighted.mean(c(2,3,4,5,6,8),c(78,40,16,3,1,1)) >group.3 <- weighted.mean(c(3,4,5,6), c(19,10,19,4)) > >> cbind(rbind(2,3),rbind(group.2,group.3)) > [,1] [,2] >group.2 2 2.654676 >group.3 3 4.153846 > >I would like to use tapply to automatically do this across the whole >dataset (dat) - which includes lots of other distinct >grouping factors, >however, like I said, I couldn't understand (and therefore >apply to my >data) any of the other solutions I found, so any help here would be >greatly appreciated! > >All the best, >Dan. > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide! >http://www.R-project.org/posting-guide.html > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide! >http://www.R-project.org/posting-guide.html >