How to Create Contingency Table in R

The table() function uses the cross-classifying factors to build a contingency table of the counts at each combination of factor levels. The table() method creates a categorical representation of data with the variable names and the frequency in a table.

Contingency Table in R

The contingency table is a built-in data structure used to redraw data and assemble it into a table. It shows the distribution of a variable in the rows and another in its columns.

Contingency tables are a way of summarizing categorical variables. It deals with a single table is called a complex or a flat contingency table.

The table() function takes any data structure as an argument and creates a contingency table. The more complex the original data, the more complex is the resulting contingency table.

data <- c(21, 46, 30, 19, 18, 11)

contigency_table <- table(data)
print(contigency_table)

Output

data

11 18 19 21 30 46
 1  1  1  1  1  1

In this example, we are executing the table() function to a vector.

Creating contingency tables from a data frame

Data Frame in R is a table or two-dimensional array-like structure in which a row contains a set of values, and each column holds values of one variable.

Let’s create a data frame using data.frame() function and pass that into a table() function.

data <- data.frame(
 "Parents" = c("Shobhanaben", "Devendrabhai"),
 "Gender" = c("Female", "Male")
)

contigency_table <- table(data)
print(contigency_table)

Output

                  Gender
Parents       Female   Male
Devendrabhai    0       1
Shobhanaben     1       0

Creating custom contingency tables in R

To create a custom contingency table, use one of the following approaches.

  1. By Rotating Data Frames in R.
  2. Using Columns of a Data Frame in a Contingency Table.
  3. Creating Contingency Tables from Matrix Objects in R.
  4. Using Rows of a Data Frame in a Contingency Table.

Rotating data frames in R

To rotate or transpose data in R, use the t() function.

data <- data.frame(
 "Parents" = c("Shobhanaben", "Devendrabhai"),
 "Gender" = c("Female", "Male")
)

transpose <- t(data)
contigency_table <- table(transpose)
print(contigency_table)

Output

  transpose
  Devendrabhai  Female  Male  Shobhanaben
        1         1      1        1

Using Columns of a Data Frame

Using the table() function, we can specify the columns with which the contingency tables can be created.

data <- data.frame(
 "Parents" = c("Shobhanaben", "Devendrabhai"),
 "Gender" = c("Female", "Male")
)

contigency_table <- table(data$Parents)
print(contigency_table)

Output

Devendrabhai    Shobhanaben
     1               1

You can see from the output that it returns the output in alphabetical order.

Using Matrix Objects in R

A matrix is a rectangular form of numbers in rows and columns. Thus, the matrix is a two-dimensional, homogeneous data structure.

mat <- matrix(
 c(19, 21, 46, 11),
 nrow = 2,
 ncol = 2
)

table <- table(mat)
print(table)

Output

 mat
 11  19  21  46
  1   1   1   1

Using Rows of a Data Frame

We can’t build a contingency table using rows of a data frame directly as we did in the “using column” section. However, with the help of the matrix, we can create a contingency table by looking at the rows of a data frame.

data <- data.frame(
 "Parents" = c("Shobhanaben", "Devendrabhai"),
 "Gender" = c("Female", "Male")
)

contigency_table <- table(as.matrix(data[2:3, ]))
print(contigency_table)

Output

Devendrabhai    Male
     1           1

That’s it for this tutorial.

Leave a Comment