Calculate the Mode in R

Your goal

You need to calculate the mode of numerical or categorical data in R.

Step-by-step tutorial

Strangely, R doesn't have a built-in function for calculating the statistical mode of a dataset. There is a mode function, but it deals with the storage mode of an object, not the statistical mode of a set of data.

So to calculate the mode, we'll need to write our own function. We'll use a pair of functions due to Ken Williams on Stack Overflow:

# For a single mode
Mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]

# For multiple modes
Modes <- function(x) {
  ux <- unique(x)
  tab <- tabulate(match(x, ux))
  ux[tab == max(tab)]

Now we can use these as follows:

> Mode(c("apple", "apple", "banana", "cherry"))
[1] "apple"
> Modes(c("apple", "apple", "banana", "cherry", "cherry"))
[1] "apple"  "cherry"