vaggregate | R Documentation |
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.
vaggregate(.value, .group, .fun, ..., .default = NULL, .n = nlevels(.group))
.value |
vector of values to aggregate |
.group |
grouping vector |
.fun |
aggregation function |
... |
other arguments passed on to |
.default |
default value used for missing groups. This argument is also used as the template for function output. |
.n |
total number of groups |
vaggregate
should be faster than tapply
in most situations
because it avoids making a copy of the data.
# 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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.