Chapter 5 General Codes

5.1with and table

The data always have 0 and 1 indicating exposure/disease/confounder status, to get contigency tables for further calculation, we use with and table.

dat <- foreign::read.dta("./_data/diet.dta")
head(dat)
##   act diet mort
## 1   0    0    1
## 2   0    0    0
## 3   0    0    1
## 4   0    0    1
## 5   0    0    0
## 6   0    0    0

5.1.1 2 way table

• table uses the cross-classifying factors to build a contingency table of the counts at each combination of factor levels.

• The input data for table should be one or more objects which can be interpreted as factors.

• To create a two by two table for exposure and disease: table(data$exposure, data$disease)

table(dat$diet, dat$mort)
##
##       0   1
##   0 186 136
##   1 119  59
• with(data, expr, ...): evaluate an R expression in an environment constructed from data

• data: data to use for constructing an environment.
• expr: expression to evaluate, in this case we use table()
with(dat, table(diet,mort))
##     mort
## diet   0   1
##    0 186 136
##    1 119  59
• The same results as using table() function only

• As the environment has been constructed, there’s no need to use dat\$ to tell R how to find the factor.

5.1.2 3 way table

• Similar method as 2 way table, but indicate the third factor using by =

• To create a three way table for exposure and disease: with(data, table(exposure, disease, by = confounder))
table3 <- with(dat, table(diet, mort, by = act))
table3
## , , by = 0
##
##     mort
## diet  0  1
##    0 75 75
##    1 22 17
##
## , , by = 1
##
##     mort
## diet  0  1
##    0 45 40
##    1 36 28
##
## , , by = 2
##
##     mort
## diet  0  1
##    0 34 14
##    1 37 10
##
## , , by = 3
##
##     mort
## diet  0  1
##    0 32  7
##    1 24  4