Collapse (or re-label) variables in a a contingency table, array or
ftable object by re-assigning levels of the table variables.
Value
A xtabs and table object, representing the original
table with one or more of its factors collapsed or rearranged into other
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.
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 102 97 113 82 105 98
#> med 110 104 111 107 91 98
#> high 111 90 89 100 93 98
#> Female low 94 105 113 104 95 108
#> med 118 90 92 98 102 95
#> high 115 97 91 98 109 107
## 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 199 195 203
#> med 214 218 189
#> high 201 189 191
#> Female low 199 217 203
#> med 208 190 197
#> high 212 189 216
## 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 413 413 392
#> high 201 189 191
#> Female low 407 407 400
#> high 212 189 216
## 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 102 97 113 82 105 98
#> 2 110 104 111 107 91 98
#> 3 111 90 89 100 93 98
#> Female 1 94 105 113 104 95 108
#> 2 118 90 92 98 102 95
#> 3 115 97 91 98 109 107
structable(t4)
#> age a b c d e f
#> sex education
#> Male 1 102 97 113 82 105 98
#> 2 110 104 111 107 91 98
#> 3 111 90 89 100 93 98
#> Female 1 94 105 113 104 95 108
#> 2 118 90 92 98 102 95
#> 3 115 97 91 98 109 107
## 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
