Table of Contents
To create a contingency table in R, one can use the table() function in R to create a two-dimensional frequency table of the counts of the number of occurrences of the combination of two or more variables. The function typically takes in two vectors of the same length as its arguments, and the result is a table with the counts of the number of occurrences of the combination of values for the two variables. The table() function can also be used to create a three-way contingency table, by specifying additional arguments.
A contingency table (sometimes called “crosstabs”) is a type of table that summarizes the relationship between two categorical variables.
Fortunately it’s easy to create a contingency table for variables in R by using the pivot table function. This tutorial shows an example of how to do so.
Example: Contingency Table in R
Suppose we have the following dataset that shows information for 20 different product orders, including the type of product purchased along with the country that the product was purchased in:
#create data df <- data.frame(order_num = 1:20, product=rep(c('TV', 'Radio', 'Computer'), times=c(9, 6, 5)), country=rep(c('A', 'B', 'C', 'D'), times=5)) #view data df order_num product country 1 1 TV A 2 2 TV B 3 3 TV C 4 4 TV D 5 5 TV A 6 6 TV B 7 7 TV C 8 8 TV D 9 9 TV A 10 10 Radio B 11 11 Radio C 12 12 Radio D 13 13 Radio A 14 14 Radio B 15 15 Radio C 16 16 Computer D 17 17 Computer A 18 18 Computer B 19 19 Computer C 20 20 Computer D
To create a contingency table, we can simply use the table() function and provide the variables product and country as the arguments:
#create contingency table table <- table(df$product, df$country) #view contingency table table A B C D Computer 1 1 1 2 Radio 1 2 2 1 TV 3 2 2 2
We can also use the addmargins() function to add margins to the table:
#add margins to contingency table table_w_margins <- addmargins(table) #view contingency table table_w_margins A B C D Sum Computer 1 1 1 2 5 Radio 1 2 2 1 6 TV 3 2 2 2 9 Sum 5 5 5 5 20
Here is how to interpret the table:
- The value in the bottom right corner shows the total number of products ordered: 20.
- The values along the right side show the row sums: A total of 5 computers were ordered, 6 radios were ordered, and 9 TV’s were ordered.
- The values along the bottom of the table show the column sums: A total of 5 products were ordered from country A, 5 from country B, 5 from country C, and 5 from country D.
- The values inside the table show the number of specific products ordered from each country: 1 computer from country A, 1 radio from country A, 3 TV’s from country A, etc.