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 97 113 82 105 98 110
#> med 104 111 107 91 98 111
#> high 90 89 100 93 98 94
#> Female low 105 113 104 95 108 118
#> med 90 92 98 102 95 115
#> high 97 91 98 109 107 111
## 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 210 187 208
#> med 215 198 209
#> high 179 193 192
#> Female low 218 199 226
#> med 182 200 210
#> high 188 207 218
## 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 425 385 417
#> high 179 193 192
#> Female low 400 399 436
#> high 188 207 218
## 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 97 113 82 105 98 110
#> 2 104 111 107 91 98 111
#> 3 90 89 100 93 98 94
#> Female 1 105 113 104 95 108 118
#> 2 90 92 98 102 95 115
#> 3 97 91 98 109 107 111
structable(t4)
#> age a b c d e f
#> sex education
#> Male 1 97 113 82 105 98 110
#> 2 104 111 107 91 98 111
#> 3 90 89 100 93 98 94
#> Female 1 105 113 104 95 108 118
#> 2 90 92 98 102 95 115
#> 3 97 91 98 109 107 111
## 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
