[R] Getting the groupmean for each person

kjetil@acelerate.com kjetil at acelerate.com
Mon May 10 12:41:00 CEST 2004


On 10 May 2004 at 10:09, Christophe Pallier wrote:

> 
> 
> Liaw, Andy wrote:
> 
> >Suppose I
> >define the function:
> >
> >fun <- function(x, f) {
> >    m <- tapply(x, f, mean)
> >    ans <- x - m[match(f, unique(f))]
> >    names(ans) <- names(x)
> >    ans
> >}
> >
> >  
> >
> 
> May I ask what is the purpose of match(f,unique(f)) ?
> 
> To remove the group means, I have be using:
> 
> x-tapply(x,f,mean)[f]
> 
> for a while, (and I am now changing to 
> x-tapply(x,f,mean)[as.character(f)] because of the peculiarities of

wouldn't 
 sweep(as.array(x), 1, tapply(x,f,mean)[as.character(f)] , "-")

be more natural?

Kjetil Halvorsen

> indexing named vectors with factors )
> 
> The use of tapply(x,f,mean)[match(f,unique(f))] assumes a particular
> order in the result of tapply, no? It seems a bit dangerous to me.
> 
> 
> Christophe Pallier
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list