Try this: with(split(DF, with(DF, ave(SCORE, NAME, FUN = length)))[['3']], tapply(SCORE, NAME[,drop = TRUE], FUN = mean))
Or: with(DF, tapply(SCORE, NAME, mean))[table(DF$NAME) == 3] On Tue, Jan 5, 2010 at 4:29 PM, Geoffrey Smith <[email protected]> wrote: > Hello, does anyone know how to take the mean for a subset of observations? > For example, suppose my data looks like this: > > OBS NAME SCORE > 1 Tom 92 > 2 Tom 88 > 3 Tom 56 > 4 James 85 > 5 James 75 > 6 James 32 > 7 Dawn 56 > 8 Dawn 91 > 9 Clara 95 > 10 Clara 84 > > Is there a way to get the mean of the SCORE variable by NAME but only when > the number of observations is equal to 3? In other words, is there a way to > get the mean of the SCORE variable for Tom and James, but not for Dawn and > Clara? Thank you. > > -- > Geoffrey Smith > Visiting Assistant Professor > Department of Finance > W. P. Carey School of Business > Arizona State University > > [[alternative HTML version deleted]] > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- Henrique Dallazuanna Curitiba-Paraná-Brasil 25° 25' 40" S 49° 16' 22" O ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.

