prop.table() Function in R

Spread the love

This article will delve into the use of the function: prop.table(). This function is a valuable asset when dealing with relative frequencies and proportion data, proving especially useful when you need to normalize data or convert it into a percentage form. Here, we will explain how you can utilize this function, starting from a basic introduction to its more advanced applications.

Part 1: What is the prop.table() Function?

prop.table() is an R function that is designed to calculate the proportion of table entries or data elements. This function helps convert raw frequencies in a table into proportions, allowing for a more holistic view of the data. In essence, it normalizes data to express it as a fraction of the total sum. This can be particularly useful when dealing with large datasets where individual counts might not make sense without context.

The syntax of the function is as follows:

prop.table(x, margin = NULL)


  • x is the input data which can be a vector, a matrix, or an array.
  • margin is an optional argument that can be used to specify the dimension (for matrices or arrays) or category (for vectors) over which the proportions are computed. If it is not specified, the proportions are computed over the entire set of data.

Part 2: Basic Usage of prop.table()

To illustrate the function’s use, let’s start with a basic vector.

# Create a vector
v <- c(10, 20, 30, 40)

# Apply prop.table() function
v_prop <- prop.table(v)

# Print the result

In this code, we have a vector v with four elements. When we apply prop.table() to v, we get a new vector v_prop where each element is the proportion of the corresponding element in v relative to the sum of all elements in v. Thus, the sum of all elements in v_prop will always be 1.

Application on Matrices

For a matrix, prop.table() will by default calculate the proportions of all elements in the matrix. If you specify the margin argument, you can compute proportions row-wise (if margin=1) or column-wise (if margin=2).

# Create a matrix
m <- matrix(c(2, 4, 6, 8, 10, 12), nrow = 2)

# Apply prop.table() function
m_prop <- prop.table(m)

# Print the result

In the code above, m is a 2×3 matrix. After applying prop.table() to m, we get a new matrix m_prop where each element is the proportion of the corresponding element in m relative to the sum of all elements in m.

To calculate proportions by rows, set margin = 1.

# Proportions by rows
m_prop_row <- prop.table(m, margin = 1)

# Print the result

Similarly, to calculate proportions by columns, set margin = 2.

# Proportions by columns
m_prop_col <- prop.table(m, margin = 2)

# Print the result

Part 3: prop.table() with Data Frames

While prop.table() doesn’t directly work with data frames, we can leverage it in combination with other functions to perform similar operations. Let’s consider an example with the mtcars dataset in R.

# Load the mtcars dataset

# View the first few rows of the dataset

Suppose we want to find the proportion of cars having different numbers of gears. We can first use table() to get the frequency count and then prop.table() to convert these frequencies into proportions.

# Get the frequency count of gears
gears_count <- table(mtcars$gear)

# Calculate the proportions
gears_prop <- prop.table(gears_count)

# Print the result

Part 4: prop.table() with Factor Variables

Factor variables in R are categorical variables stored as integer vectors with a corresponding set of character values to denote the category names. prop.table() can help us to find the proportions of each category level.

# Create a factor variable
f <- factor(c("Apple", "Banana", "Apple", "Banana", "Banana", "Cherry", "Cherry", "Cherry", "Cherry"))

# Apply prop.table() function
f_prop <- prop.table(table(f))

# Print the result

Here, f is a factor variable with three levels (Apple, Banana, and Cherry). We first use table() to get the frequency of each level, then prop.table() to get the proportions.

Part 5: prop.table() with Array

prop.table() also works with arrays. You can compute the proportions for each element in the array or specify a particular dimension with the margin argument. An example of using prop.table() with a 3D array is as follows:

# Create a 3D array
a <- array(1:24, dim = c(2, 3, 4))

# Apply prop.table() function
a_prop <- prop.table(a)

# Print the result

This creates a 3D array a with dimensions 2x3x4. After applying prop.table() to a, we get a new array a_prop where each element is the proportion of the corresponding element in a relative to the sum of all elements in a.


The prop.table() function is a powerful tool in R for working with proportions and relative frequencies. This function allows you to quickly convert raw counts into percentages, making it easier to understand the data, especially when working with large datasets.

Posted in RTagged

Leave a Reply