| by {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, ..., simplify = TRUE)
Arguments
data |
an R object, normally a data frame, possibly a matrix. |
INDICES |
a factor or a list of factors, each of length
|
FUN |
a function to be applied to data frame subsets of |
... |
further arguments to |
simplify |
logical: see |
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 turn.
Object data will be coerced to a data frame by the default
method, but if this results in a 1-column data frame, the
objects passed to FUN are dropped to a subsets of that column.
Value
An object of class "by", giving the results for each subset.
This is always a list if simplify is false, otherwise a list or
array (see tapply).
See Also
tapply, simplify2array.
ave also applies a function block-wise.
Examples
require(stats)
by(warpbreaks[, 1:2], warpbreaks[,"tension"], summary)
by(warpbreaks[, 1], warpbreaks[, -1], summary)
by(warpbreaks, warpbreaks[,"tension"],
function(x) lm(breaks ~ wool, data = x))
## now suppose we want to extract the coefficients by group
tmp <- with(warpbreaks,
by(warpbreaks, tension,
function(x) lm(breaks ~ wool, data = x)))
sapply(tmp, coef)