Apply a Function to a Variable Within Factor Levels
Tapply.RdApplies a function, typically to compute a single statistic, like a mean, median, or standard deviation,
within levels of a factor or within combinations of levels of two or more factors to produce a table of statistics. This function provides
a formula interface to the standard R tapply function.
Usage
Tapply(formula, fun, data, na.action = na.pass, ..., targs = list())Arguments
- formula
a two-sided formula of the form
variable ~ factor.1 + factor.2 + ... + factor.nor, equivalently,variable ~ factor.1*factor.2* ... *factor.n. The variables on the right-hand side of the formula are normally factors or are otherwise coerced to factors.- fun
a function, like
mean,median, orsd, that takes a vector first argument and typically returns a single number as its value.- data
an optional data frame within which to find the variable and factor(s).
- na.action
a function to handle missing values, as in statistical modeling functions like
lm; the default isna.pass.- ...
arguments to pass to the function given in the
funargument, such as (commonly)na.rm=TRUE.- targs
a list of optional arguments to pass to
tapply.
Details
The function given by fun is applied to the values of the left-hand-side variable in formula within
(combination of) levels of the factor(s) given in the right-hand side of formula, producing a table of statistics.
Value
The object returned by tapply, typically simply printed.
Author
John Fox jfox@mcmaster.ca
References
Fox, J. and Weisberg, S. (2019) An R Companion to Applied Regression, Third Edition. Sage.
Examples
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore)
#> fcategory
#> partner.status high low medium
#> high 11.85714 17.4 14.27273
#> low 12.62500 8.9 7.25000
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore,
trim=0.2)
#> fcategory
#> partner.status high low medium
#> high 11.40000 17.333333 15.00
#> low 12.16667 8.666667 7.25
Moore[1, 2] <- NA
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore)
#> fcategory
#> partner.status high low medium
#> high 11.85714 17.4 14.27273
#> low 12.62500 NA 7.25000
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore,
na.rm=TRUE)
#> fcategory
#> partner.status high low medium
#> high 11.85714 17.4 14.27273
#> low 12.62500 9.0 7.25000
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore,
na.action=na.omit) # equivalent
#> fcategory
#> partner.status high low medium
#> high 11.85714 17.4 14.27273
#> low 12.62500 9.0 7.25000
remove("Moore")