# genTable: Generic Tables and Data Frames of Descriptive Statistics In memisc: Management of Survey Data and Presentation of Analysis Results

## Description

`genTable` creates a table of arbitrary summaries conditional on given values of independent variables given by a formula.

`Aggregate` does the same, but returns a `data.frame` instead.

`fapply` is a generic function that dispatches on its `data` argument. It is called internally by `Aggregate` and `genTable`. Methods for this function can be used to adapt `Aggregate` and `genTable` to data sources other than data frames.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11``` ```Aggregate(formula, 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) ## Default S3 method: fapply(formula, data, subset=NULL, names=NULL, addFreq=TRUE,...) ```

## Arguments

 `formula` a formula. The right hand side includes one or more grouping variables separated by '+'. These may be factors, numeric, or character vectors. The left hand side may be empty, a numerical variable, a factor, or an expression. See details below. `data` an environment or data frame or an object coercable into a data frame. `subset` an optional vector specifying a subset of observations to be used. `sort` a logical value; determines the order in which the aggregated data appear in the data frame returned by `Aggregate`. If `sort` is TRUE, then the returned data frame is sorted by the values of the grouping variables, if `sort` is FALSE, the order of resulting data frame corresponds to the order in which the values of the grouping variables appear in the original data frame. `names` an optional character vector giving names to the result(s) yielded by the expression on the left hand side of `formula`. This argument may be redundant if the left hand side results in is a named vector. (See the example below.) `addFreq` a logical value. If TRUE and `data` is a table or a data frame with a variable named "Freq", a call to `table`, `Table`, `percent`, or `nvalid` is supplied by an additional argument `Freq` and a call to `table` is translated into a call to `Table`. `as.vars` an integer; relevant only if the left hand side of the formula returns an array or a matrix - which dimension (rows, columns, or layers etc.) will transformed to variables? Defaults to columns in case of matrices and to the highest dimensional extend in case of arrays. `drop.constants` logical; variables that are constant across levels dropped from the result? `...` further arguments, passed to methods or ignored.

## Details

If an expression is given as left hand side of the formula, its value is computed for any combination of values of the values on the right hand side. If the right hand side is a dot, then all variables in `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` is equivalent to `as.data.frame(xtabs(...))`.

## Value

`Aggregate` 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"`.

aggregate.data.frame, xtabs

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25``` ```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") ```

### Example output

```Loading required package: lattice

Attaching package: 'memisc'

The following objects are masked from 'package:stats':

contr.sum, contr.treatment, contrasts

The following object is masked from 'package:base':

as.array

mu sigma Freq
1   0     1  100
2 100     1  100
3   0    10  100
4 100    10  100
mu sigma      mean(x)
1   0     1   0.04902517
2 100     1 100.04925092
3   0    10   0.91621315
4 100    10  97.30287472
mu sigma      mean(x)
1   0     1   0.04902517
2 100     1 100.04925092
3   0    10   0.91621315
4 100    10  97.30287472
mu sigma      mean(x)     sd(x)
1   0     1   0.04902517  1.040891
2 100     1 100.04925092  1.053505
3   0    10   0.91621315 10.523308
4 100    10  97.30287472 10.369578
mu sigma         Mean     StDev   N
1   0     1   0.04902517  1.040891 100
2 100     1 100.04925092  1.053505 100
3   0    10   0.91621315 10.523308 100
4 100    10  97.30287472 10.369578 100
, , sigma = 1

mu
0          100
Mean    0.04902517 100.04925092
StDev   1.04089130   1.05350484
N     100.00000000 100.00000000

, , sigma = 10

mu
0          100
Mean    0.91621315  97.30287472
StDev  10.52330765  10.36957754
N     100.00000000 100.00000000

1    Male    A      512      313
3  Female    A       89       19
5    Male    B      353      207
7  Female    B       17        8
9    Male    C      120      205
11 Female    C      202      391
13   Male    D      138      279
15 Female    D      131      244
17   Male    E       53      138
19 Female    E       94      299
21   Male    F       22      351
23 Female    F       24      317
1    Male    A      512      313
3  Female    A       89       19
5    Male    B      353      207
7  Female    B       17        8
9    Male    C      120      205
11 Female    C      202      391
13   Male    D      138      279
15 Female    D      131      244
17   Male    E       53      138
19 Female    E       94      299
21   Male    F       22      351
23 Female    F       24      317
1    Male    A      512      313
3  Female    A       89       19
5    Male    B      353      207
7  Female    B       17        8
9    Male    C      120      205
11 Female    C      202      391
13   Male    D      138      279
15 Female    D      131      244
17   Male    E       53      138
19 Female    E       94      299
21   Male    F       22      351
23 Female    F       24      317
1    Male    A 62.060606 37.93939 825
3  Female    A 82.407407 17.59259 108
5    Male    B 63.035714 36.96429 560
7  Female    B 68.000000 32.00000  25
9    Male    C 36.923077 63.07692 325
11 Female    C 34.064081 65.93592 593
13   Male    D 33.093525 66.90647 417
15 Female    D 34.933333 65.06667 375
17   Male    E 27.748691 72.25131 191
19 Female    E 23.918575 76.08142 393
21   Male    F  5.898123 94.10188 373
23 Female    F  7.038123 92.96188 341
1   Male 44.51877 55.48123 2691
3 Female 30.35422 69.64578 1835
1     A 64.415863 35.58414 933
5     B 63.247863 36.75214 585
9     C 35.076253 64.92375 918
13    D 33.964646 66.03535 792
17    E 25.171233 74.82877 584
21    F  6.442577 93.55742 714
Dept     Male    Female   N
1     A 88.42444 11.575563 933
5     B 95.72650  4.273504 585
9     C 35.40305 64.596950 918
13    D 52.65152 47.348485 792
17    E 32.70548 67.294521 584
21    F 52.24090 47.759104 714
3     A 82.407407 17.59259 108
7     B 68.000000 32.00000  25
11    C 34.064081 65.93592 593
15    D 34.933333 65.06667 375
19    E 23.918575 76.08142 393
23    F  7.038123 92.96188 341
Dept
A          B          C          D          E          F
Admitted  82.407407  68.000000  34.064081  34.933333  23.918575   7.038123
Rejected  17.592593  32.000000  65.935919  65.066667  76.081425  92.961877
N        108.000000  25.000000 593.000000 375.000000 393.000000 341.000000
```

memisc documentation built on Dec. 23, 2017, 5:09 p.m.