In statistics, the **mode** represents the most common value in a data set. Therefore, the mode is the value that occurs with the highest frequency in a data set (Mann 2012). In terms of graphical frequency distribution the mode corresponds to the summit(s) of the graph. A major shortcoming of the mode is that a data set may have none or may have more than one mode, whereas it will have only one mean and only one median. For instance, a data set with each value occurring only once has no mode. A data set with only one value occurring with the highest frequency has only one mode. The data set in this case is called **unimodal**. A data set with two values that occur most frequently has two modes. The distribution, in this case, is said to be **bimodal**. If more than two values in a data set occur most frequently, then the data set contains more than two modes and it is said to be **multimodal** (Mann 2012).

Unlike the mean and the median, the mode can be applied for quantitative (numeric) and qualitative (categorical) data. R does not have a standard in-built function to calculate the mode. So we create a function to calculate mode of a data set in R. This function takes the vector as input and gives the mode value as output (source code).

```
# Create the function.
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
```

Now that we have built a function, we test it on the `students`

data set. We use the very handy `apply`

function in order to apply the function `getmode`

to every variable of interest. Do not forget to type `help(apply)`

in your console if you struggle with the `apply`

function.

```
students <- read.csv("https://userpage.fu-berlin.de/soga/200/2010_data_sets/students.csv")
vars <- c("gender", "age", "religion", "nc.score", "semester", "height", "weight")
students.modes <- apply(students[vars], 2, getmode)
```

We may use the `cbind`

function to print the `students.modes`

object in a more readable column format.

`cbind(students.modes)`

```
## students.modes
## gender "Male"
## age "21"
## religion "Catholic"
## nc.score "1.18"
## semester "1st"
## height "174"
## weight " 67.1"
```