aggregate2: Perform Multiple Aggregation Functions on Grouped Data

Description Usage Arguments Note Author(s) See Also Examples

View source: R/aggregate2.R

Description

Base R's aggregate function allows you to specify multiple functions when aggregating. However, the output of such commands is a data.frame where the aggregated "columns" are actually matrices. aggregate2 is a basic wrapper around aggregate that outputs a regular data.frame instead.

Usage

1
aggregate2(data, aggs, ids, funs = NULL, ...)

Arguments

data

Your data.frame

aggs

The variables that need to be aggregated, specified as a character vector.

ids

The variables that serve as grouping variables, specified as a character vector.

funs

The functions that you want to apply, specified as a character vector.

...

Further arguments to aggregate. Really only useful for the subset argument.

Note

This function essentially constructs a formula that can be used with aggregate and keeps track of the names of the aggregation functions you have applied to create new variable names. This function is not very useful when the output of FUN would already output a matrix (for example, if FUN = fivenum or FUN = summary). In such cases, it is recommended to use base R's aggregate with a do.call. For example: do.call("data.frame", aggregate(. ~ Species, iris, summary)).

Author(s)

Ananda Mahto

See Also

aggregate

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# One-to-one, two functions
(temp1a <- aggregate(weight ~ feed, data = chickwts,
            function(x) cbind(mean(x), sum(x))))
str(temp1a)
(temp1b <- aggregate2(chickwts, "weight", "feed", c("mean", "sum")))
str(temp1b)

# Many-to-many, two functions
(temp2a <- aggregate(cbind(ncases, ncontrols) ~ alcgp + tobgp, data = esoph,
            function(x) cbind(sum(x), mean(x))))
str(temp2a)
(temp2b <- aggregate2(esoph, c("ncases", "ncontrols"),
             c("alcgp", "tobgp"), c("sum", "mean")))
str(temp2b)

# Dot notation
(temp3a <- aggregate(len ~ ., data = ToothGrowth,
            function(x) cbind(sum(x), mean(x))))
str(temp3a)
(temp3b <- aggregate2(ToothGrowth, "len", ".", c("sum", "mean")))
str(temp3b)

mrdwab/mrdwabmisc documentation built on May 23, 2019, 7:15 a.m.