aggregate                package:base                R Documentation

Compute Summary Statistics of Data Subsets

Description:

     Splits the data into subsets, computes summary statistics for
     each, and returns the result in a convenient form.

Usage:

     aggregate(x, ...)
     aggregate.default(x, ...)
     aggregate.data.frame(x, by, FUN, ...)
     aggregate.ts(x, nfrequency = 1, FUN = sum, ndeltat = 1,
                  ts.eps = getOption("ts.eps"), ...)

Arguments:

       x: an R object.

      by: a list of grouping elements, each as long as the variables in
          `x'.  Names for the grouping variables are provided if they
          are not given.

     FUN: a scalar function to compute the summary statistics which can
          be applied to all data subsets.

nfrequency: new number of observations per unit of time; must be a
          divisor of the frequency of `x'.

 ndeltat: new fraction of the sampling period between successive
          observations; must be a divisor of the sampling interval of
          `x'.

  ts.eps: tolerance used to decide if `nfrequency' is a sub-multiple of
          the original frequency.

     ...: further arguments passed to or used by methods.

Details:

     `aggregate' is a generic functions with methods for data frames
     and time series.

     The default method `aggregate.default' uses the time series method
     if `x' is a time series, and otherwise coerces `x' to a data frame
     and calls the data frame method.

     `aggregate.data.frame' is the data frame method.  If `x' is not a
     data frame, it is coerced to one.  Then, each of the variables
     (columns) in `x' is split into subsets of cases (rows) of
     identical combinations of the components of `by', and `FUN' is
     applied to each such subset with further arguments in `...' passed
     to it. (I.e., `tapply(VAR, by, FUN, ..., simplify = FALSE)' is
     done for each variable `VAR' in `x', conveniently wrapped into one
     call to `lapply()'.) Empty subsets are removed, and the result is
     reformatted into a data frame containing the variables in `by' and
     `x'.  The ones arising from `by' contain the unique combinations
     of grouping values used for determining the subsets, and the ones
     arising from `x' the corresponding summary statistics for the
     subset of the respective variables in `x'.

     `aggregate.ts' is the time series method.  If `x' is not a time
     series, it is coerced to one.  Then, the variables in `x' are
     split into appropriate blocks of length `frequency(x) /
     nfrequency', and `FUN' is applied to each such block, with further
     (named) arguments in `...' passed to it.  The result returned is a
     time series with frequency `nfrequency' holding the aggregated
     values.

Author(s):

     Kurt Hornik

See Also:

     `apply', `lapply', `tapply'.

Examples:

     data(state)

     ## Compute the averages for the variables in `state.x77', grouped
     ## according to the region (Northeast, South, North Central, West) that
     ## each state belongs to.
     aggregate(state.x77, list(Region = state.region), mean)

     ## Compute the averages according to region and the occurrence of more
     ## than 130 days of frost.
     aggregate(state.x77,
               list(Region = state.region,
                    Cold = state.x77[,"Frost"] > 130),
               mean)
     ## (Note that no state in `South' is THAT cold.)

     data(presidents)
     ## Compute the average annual approval ratings for American presidents.
     aggregate(presidents, nf = 1, FUN = mean)
     ## Give the summer less weight.
     aggregate(presidents, nf = 1, FUN = weighted.mean, w = c(1, 1, 0.5, 1))

