# Calculate the Mode in R

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"