by                   package:base                   R Documentation

Apply a Function to a Data Frame split by Factors

Description:

     Function `by' is an object-oriented wrapper for `tapply' applied
     to data frames.

Usage:

     by(data, INDICES, FUN, ...)

Arguments:

    data: an R object, normally a data frame, possibly a matrix.

 INDICES: a factor or a list of factors, each of length `nrow(x)'.

     FUN: a function to be applied to data frame subsets of `x'.

     ...: further arguments to `FUN'.

Details:

     A data frame is split by row into data frames subsetted by the
     values of one or more factors, and function `FUN' is applied to
     each subset in term.

     Object `data' will be coerced to a data frame by default.

Value:

     A list of class `"by"', giving the results for each subset.

See Also:

     `tapply'

Examples:

     data(warpbreaks)
     attach(warpbreaks)
     by(warpbreaks[, 1:2], tension, summary)
     by(warpbreaks[, 1], list(wool=wool, tension=tension), summary)
     by(warpbreaks, tension, function(x) lm(breaks ~ wool, data=x))

     ## now suppose we want to extract the coefficients by group
     tmp <- by(warpbreaks, tension, function(x) lm(breaks ~ wool, data=x))
     sapply(tmp, coef)

     detach("warpbreaks")

