
Hello

Have a problem with a function I'm trying to implement in order to calculate weighted means on semi-aggregated data since tapply doesn't work.
I've found a good solution to this using the following syntax:
splitted.value<-with(dataframe,split(value_var,group_var))
splitted.freq<-with(dataframe,split(frequency_var,group_var))
mapply(weighted.mean,splitted.value,w=splitted.freq)

Using these commands interactively produce the correct results

When implementint these commands as a function I run into problems however.

I've tried two versions:
1)

group.weightmean<-function(dataframe,value_var,group_var,frequency_var){
splitted.value<-with(dataframe,split(value_var,group_var))
splitted.freq<-with(dataframe,split(frequency_var,group_var))
mapply(weighted.mean,splitted.value,w=splitted.freq)
}

This version works but only if I first do an "attach(dataframe)" which I want to avoid.  The attach command is not necessary when running the  commands interactively

2)

group.weightmean<-function(dataframe,value_var,group_var,frequency_var){
splitted.value<-with(dataframe,split(dataframe$value_var,dataframe$group_var))
splitted.freq<-with(dataframe,split(dataframe$frequency_var,dataframe$group_var))
mapply(weighted.mean,splitted.value,w=splitted.freq)
}

This version does not run and creates an error message involving "that input data is not a vector"

Can anyone help out?

	[[alternative HTML version deleted]]

