Last data update: 2014.03.03
R: Vector aggregate.
vaggregate R Documentation
Vector aggregate.
Description
This function is somewhat similar to tapply
, but is designed for
use in conjunction with id
. It is simpler in that it only
accepts a single grouping vector (use id
if you have more)
and uses vapply
internally, using the .default
value
as the template.
Usage
vaggregate(.value, .group, .fun, ..., .default = NULL, .n = nlevels(.group))
Arguments
.value
vector of values to aggregate
.group
grouping vector
.fun
aggregation function
...
other arguments passed on to .fun
.default
default value used for missing groups. This argument is
also used as the template for function output.
.n
total number of groups
Details
vaggregate
should be faster than tapply
in most situations
because it avoids making a copy of the data.
Examples
# Some examples of use borrowed from ?tapply
n <- 17; fac <- factor(rep(1:3, length.out = n), levels = 1:5)
table(fac)
vaggregate(1:n, fac, sum)
vaggregate(1:n, fac, sum, .default = NA_integer_)
vaggregate(1:n, fac, range)
vaggregate(1:n, fac, range, .default = c(NA, NA) + 0)
vaggregate(1:n, fac, quantile)
# Unlike tapply, vaggregate does not support multi-d output:
tapply(warpbreaks$breaks, warpbreaks[,-1], sum)
vaggregate(warpbreaks$breaks, id(warpbreaks[,-1]), sum)
# But it is about 10x faster
x <- rnorm(1e6)
y1 <- sample.int(10, 1e6, replace = TRUE)
system.time(tapply(x, y1, mean))
system.time(vaggregate(x, y1, mean))
Results