aggregate.formula
constructs a data frame of summaries conditional on
given values of independent variables given by a formula. It is a method
of the generic function aggregate
applied to formula
objects. genTable
does the same, but produces a table
.
fapply
is a generic function that dispatches on its data
argument. It is called internally by aggregate.formula
and genTable
.
Methods for this function can be used to adapt aggregate.formula
and
genTable
to data sources other than data frames.
## S3 method for class 'formula':
aggregate(x, data=parent.frame(), subset=NULL,
sort = TRUE, names=NULL, addFreq=TRUE, as.vars=1,
drop.constants=TRUE,...)genTable(formula, data=parent.frame(), subset=NULL,
names=NULL, addFreq=TRUE,...)
fapply(formula,data,...) # calls UseMethod("fapply",data)
## S3 method for class 'default':
fapply(formula, data, subset=NULL,
names=NULL, addFreq=TRUE,\dots)
aggregate.formula
.
If sort
is TRUE, then the returned data frame is sorted by
the values of the grouping variableformula
.
This argument may be redundant if the left hand side results in is a named vector.
(See the example below.)aggregate.formula
results in a data frame with conditional summaries and unique value combinations
of conditioning variables. genTable
returns a table, that is, an array with class "table"
.
data
are added to the right hand side of the
formula.If no expression is given as left hand side, then the frequency counts for the respective value combinations of the right hand variables are computed.
If a single factor is on the left hand side, then the left hand side is
translated into an appropriate
call to table()
. Note that also in this case addFreq
takes effect.
If a single numeric variable is on the left hand side, frequency
counts weighted by this variable are computed. In these cases,
genTable
is equivalent to xtabs
and
aggregate.formula
is equivalent to as.data.frame(xtabs(...))
.
ex.data <- expand.grid(mu=c(0,100),sigma=c(1,10))[rep(1:4,rep(100,4)),]
ex.data <- within(ex.data,
x<-rnorm(
n=nrow(ex.data),
mean=mu,
sd=sigma
)
)
aggregate(~mu+sigma,data=ex.data)
aggregate(mean(x)~mu+sigma,data=ex.data)
aggregate(mean(x)~mu+sigma,data=ex.data,name="Average")
aggregate(c(mean(x),sd(x))~mu+sigma,data=ex.data)
aggregate(c(Mean=mean(x),StDev=sd(x),N=length(x))~mu+sigma,data=ex.data)
genTable(c(Mean=mean(x),StDev=sd(x),N=length(x))~mu+sigma,data=ex.data)
aggregate(table(Admit)~.,data=UCBAdmissions)
aggregate(Table(Admit,Freq)~.,data=UCBAdmissions)
aggregate(Admit~.,data=UCBAdmissions)
aggregate(percent(Admit)~.,data=UCBAdmissions)
aggregate(percent(Admit)~Gender,data=UCBAdmissions)
aggregate(percent(Admit)~Dept,data=UCBAdmissions)
aggregate(percent(Gender)~Dept,data=UCBAdmissions)
aggregate(percent(Admit)~Dept,data=UCBAdmissions,Gender=="Female")
genTable(percent(Admit)~Dept,data=UCBAdmissions,Gender=="Female")
Run the code above in your browser using DataLab