[R] How to calculate the stratified means in a data frame?

Marc Schwartz MSchwartz at MedAnalytics.com
Thu Nov 18 22:14:53 CET 2004

On Thu, 2004-11-18 at 15:34 -0500, Frank Duan wrote:
> Dear R people,
> I have a simple question to ask. Suppose I have a data.frame with two
> variables: one factor (x) and one numeric (y), I want to calculate the
> mean of y for each value of x. Although it's easy to do it within a
> for a loop, I believe there may be a concise way by using some kinds
> of "apply" functions. Could anyone tell me how to do that? Thank you.
> Frank

One way is to use by(). Using the 'iris' dataset to get the means for
Sepal.Length by Species:

> with(iris, by(Sepal.Length, Species, mean))
INDICES: setosa
[1] 5.006
INDICES: versicolor
[1] 5.936
INDICES: virginica
[1] 6.588

See ?by, also ?tapply and ?aggregate.

Note also the use of with() as a wrapper, in lieu of attach() here.


Marc Schwartz

More information about the R-help mailing list