Skip to contents

Collapse (or re-label) variables in a a contingency table, array or ftable object by re-assigning levels of the table variables.

Usage

collapse.table(table, ...)

Arguments

table

A table, array or ftable object

...

A collection of one or more assignments of factors of the table to a list of levels

Details

Each of the ... arguments must be of the form variable = levels, where variable is the name of one of the table dimensions, and levels is a character or numeric vector of length equal to the corresponding dimension of the table.

Value

A xtabs and table object, representing the original table with one or more of its factors collapsed or rearranged into other levels.

Author

Michael Friendly

See also

expand.dft expands a frequency data frame to case form.

margin.table "collapses" a table in a different way, by summing over table dimensions.

Examples

# create some sample data in table form
sex <- c("Male", "Female")
age <- letters[1:6]
education <- c("low", 'med', 'high')
data <- expand.grid(sex=sex, age=age, education=education)
counts <- rpois(36, 100) 
data <- cbind(data, counts)
t1 <- xtabs(counts ~ sex + age + education, data=data)
structable(t1)
#>                  age   a   b   c   d   e   f
#> sex    education                            
#> Male   low           132  88 109 117  93 109
#>        med            99 108  90  89 118 109
#>        high          101  98 104  78 103  88
#> Female low            84 112  94  96 109  99
#>        med           108  92  69 109 102 110
#>        high          117  97  87  90  99  93

##                  age   a   b   c   d   e   f
## sex    education                            
## Male   low           119 101 109  85  99  93
##        med            94  98 103 108  84  84
##        high           81  88  96 110 100  92
## Female low           107 104  95  86 103  96
##        med           104  98  94  95 110 106
##        high           93  85  90 109  99  86


# collapse age to 3 levels
t2 <- collapse.table(t1, age=c("A", "A", "B", "B", "C", "C"))
structable(t2)
#>                  age   A   B   C
#> sex    education                
#> Male   low           220 226 202
#>        med           207 179 227
#>        high          199 182 191
#> Female low           196 190 208
#>        med           200 178 212
#>        high          214 177 192

##                  age   A   B   C
## sex    education                
## Male   low           220 194 192
##        med           192 211 168
##        high          169 206 192
## Female low           211 181 199
##        med           202 189 216
##        high          178 199 185


# collapse age to 3 levels and pool education: "low" and "med" to "low"
t3 <- collapse.table(t1, age=c("A", "A", "B", "B", "C", "C"), 
    education=c("low", "low", "high"))
structable(t3)
#>                  age   A   B   C
#> sex    education                
#> Male   low           427 405 429
#>        high          199 182 191
#> Female low           396 368 420
#>        high          214 177 192

##                  age   A   B   C
## sex    education                
## Male   low           412 405 360
##        high          169 206 192
## Female low           413 370 415
##        high          178 199 185



# change labels for levels of education to 1:3
t4 <- collapse.table(t1,  education=1:3)
structable(t4)
#>                  age   a   b   c   d   e   f
#> sex    education                            
#> Male   1             132  88 109 117  93 109
#>        2              99 108  90  89 118 109
#>        3             101  98 104  78 103  88
#> Female 1              84 112  94  96 109  99
#>        2             108  92  69 109 102 110
#>        3             117  97  87  90  99  93

structable(t4)
#>                  age   a   b   c   d   e   f
#> sex    education                            
#> Male   1             132  88 109 117  93 109
#>        2              99 108  90  89 118 109
#>        3             101  98 104  78 103  88
#> Female 1              84 112  94  96 109  99
#>        2             108  92  69 109 102 110
#>        3             117  97  87  90  99  93
##                  age   a   b   c   d   e   f
## sex    education                            
## Male   1             119 101 109  85  99  93
##        2              94  98 103 108  84  84
##        3              81  88  96 110 100  92
## Female 1             107 104  95  86 103  96
##        2             104  98  94  95 110 106
##        3              93  85  90 109  99  86