[R] Getting the groupmean for each person

Thomas Lumley tlumley at u.washington.edu
Sun May 9 21:32:21 CEST 2004


On Sat, 8 May 2004, Gabor Grothendieck wrote:

>
> predict(lm(AV~as.factor(GROUP)))


If Felix actually has a "huge" data frame this will be slow. Instead
try

groupmeans<-rowsum(AV,GROUP,reorder=FALSE)
individual.means<- groupmeans[match(GROUP, unique(GROUP)]

It uses hashing and takes roughly O(MGlogG) time for M measurements on G
groups, whereas the lm solution takes O(MG^3) [and the space requirements
are O(MG) and O(MG^2)]

Admittedly, with only 3000 observations either one will be fast enough.

	-thomas


>
>
>
> Felix Eschenburg <Atropin75 <at> t-online.de> writes:
>
> :
> : Hello list !
> :
> : I have a huge data.frame with several variables observed on about 3000
> : persons. For every person (row) there is variable called GROUP which indices
> : the group the person belongs to. There is also another variable AV for each
> : person. Now i want to create a new variable which holds the group mean of AV
> : as a value for each person.
> : With tapply(AV,GROUP,mean) i get the means for each level of GROUP, but i
> : cannot find out, how to give every person the groupmean as a value (every
> : person should have the same value as every other person in the same group).
> :
> : Has anybody any ideas how to do that ?
> :
> : Yours sincerly
> : Felix Eschenburg
>
> ______________________________________________
> 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
>

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle




More information about the R-help mailing list