tabulate() Function in R

Spread the love

The R programming language offers a range of powerful tools and functions for handling and analyzing data, including data tabulation. One function that can be instrumental in this regard is the tabulate() function. It’s a straightforward and effective way to count the frequency of values in a vector. It returns a table of the counts of the unique values in a vector. This article will discuss in-depth about tabulate(), covering its use-cases, syntax, and practical applications.

Basics of the tabulate() Function

Before delving into more specific uses, it’s important to understand the basics of the tabulate() function. The basic syntax for the tabulate() function in R is as follows:

tabulate(bin, nbins = max(1, bin, na.rm = TRUE))


  • bin: This is the numeric vector. These numbers must be non-negative integers. The input vector will be coerced to integer if necessary.
  • nbins: This represents the number of “bins” or categories into which the values should be grouped. The default is the maximum value in bin, but this can be overridden.

Note that tabulate() counts the number of times each integer appears in the bin vector and ignores any value that is not a non-negative integer.

Using the tabulate() Function

The simplest way to use tabulate() is to pass it a numeric vector.For example, let’s consider the following vector:

values <- c(1, 2, 2, 3, 3, 3, 4, 4, 4, 4)

You can tabulate these values as follows:


This will output:

[1] 1 2 3 4

This means that the number 1 appears once, the number 2 appears twice, the number 3 appears three times, and the number 4 appears four times in the original vector.

Now, if we want to specify a different number of bins, we can do so by providing a second argument to the tabulate() function. For instance:

tabulate(values, nbins = 5)

This will output:

[1] 1 2 3 4 0

Here, the fifth bin has a count of zero because there are no instances of the number 5 in the original vector.

Working with NA values

In the presence of NA values, they are ignored by default.

Consider the following vector:

values <- c(1, 2, 2, 3, NA, 3, 4, 4, NA, 4)

If we tabulate this:


We get:

[1] 1 2 2 3

Note that the NA values are not counted.

Application of the tabulate() Function

The tabulate() function is especially useful in statistics and data analysis for creating frequency tables, analyzing categorical variables, and more.

For instance, suppose you have collected some data on a categorical variable that can take on five different states (say, very poor, poor, average, good, very good), encoded as 1-5, and you want to know how many times each state occurs in your data.

ratings <- c(1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 5, 5)
tabulate(ratings, nbins = 5)

The result:

[1] 1 2 3 1 5

This means that ‘very poor’ rating was given 1 time, ‘poor’ 2 times, ‘average’ 3 times, ‘good’ 1 time, and ‘very good’ 5 times.

Applying tabulate() Function to DataFrame

The tabulate function can be applied to columns in a data frame. Suppose we have the following data frame:

df <- data.frame(
  "Gender" = c("Male", "Female", "Male", "Male", "Female", "Female"),
  "Age" = c(21, 23, 25, 22, 24, 23),
  "Rating" = c(5, 4, 3, 5, 2, 5)

We can apply the tabulate function to the “Gender” column:


We should first convert the column to integer values using the as.integer() function.

Final Thoughts

The tabulate() function in R is a versatile and powerful tool for summarizing categorical or discrete numerical data. It is simple to use yet can handle complex data tabulation needs.

Bear in mind, the examples discussed in this article are rather straightforward. The utility of tabulate() becomes apparent when dealing with large datasets where manual counting would be impractical. In those cases, tabulate() can be instrumental in your data analysis pipeline.

Posted in RTagged

Leave a Reply