Collapse Levels of a Table
collapse.table.Rd
Collapse (or re-label) variables in a
a contingency table, array or ftable
object by re-assigning levels of the table variables.
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.
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 85 99 111 91 104 83
#> med 92 105 99 107 97 107
#> high 96 102 101 80 110 93
#> Female low 89 106 81 97 91 104
#> med 99 90 104 123 90 105
#> high 101 116 98 79 100 114
## 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 184 202 187
#> med 197 206 204
#> high 198 181 203
#> Female low 195 178 195
#> med 189 227 195
#> high 217 177 214
## 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 381 408 391
#> high 198 181 203
#> Female low 384 405 390
#> high 217 177 214
## 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 85 99 111 91 104 83
#> 2 92 105 99 107 97 107
#> 3 96 102 101 80 110 93
#> Female 1 89 106 81 97 91 104
#> 2 99 90 104 123 90 105
#> 3 101 116 98 79 100 114
structable(t4)
#> age a b c d e f
#> sex education
#> Male 1 85 99 111 91 104 83
#> 2 92 105 99 107 97 107
#> 3 96 102 101 80 110 93
#> Female 1 89 106 81 97 91 104
#> 2 99 90 104 123 90 105
#> 3 101 116 98 79 100 114
## 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