Median in R (5 Examples)
This tutorial shows how to compute the median in R.
The article is mainly based on the median() function. So let’s have a look at the basic R syntax and the definition of the median function first:
Basic R Syntax of median():
median(x) |
median(x)
Definition of median():
The median R function computes the sample median of a numeric input vector.
The R tutorial contains five examples for the application of the median function in R.
Let’s dive in!
Example 1: Basic Application of median() in R
Before we can apply the median function, we need to create some example data. Consider the following numeric vector:
x1 <- c(8, 5, 3, 7, 8, 1, 6, 5) # Create example vector |
x1 <- c(8, 5, 3, 7, 8, 1, 6, 5) # Create example vector
We can now use the median R function to compute the median of our example vector:
median(x1) # Apply median function # 5.5 |
median(x1) # Apply median function # 5.5
As you can see based on the RStudio console output, the median of our example vector is 5.5.
Note: Our example vector has an even length, resulting in a median value that does not exist in our example vector. The value 5.5 is the mean of the two middle values (i.e. 5 and 6). Learn more about the concept of even and uneven input vectors when calculating the median here.
Example 2: Compute Median of Vector with NAs
A common issue in survey data is the occurrence of NAs (i.e. missing values). Let’s add such an NA value to our example vector:
x2 <- c(8, 5, 3, 7, 8, 1, 6, 5, NA) # Example vector with NA |
x2 <- c(8, 5, 3, 7, 8, 1, 6, 5, NA) # Example vector with NA
If we now apply the median R function to this vector, the RStudio console returns NA:
median(x2) # Apply median function # NA |
median(x2) # Apply median function # NA
Fortunately, the median function provides the option na.rm, which enables the user to exclude all NA values before the computation of the median:
median(x2, na.rm = TRUE) # median function with na.rm # 5.5 |
median(x2, na.rm = TRUE) # median function with na.rm # 5.5
Example 3: Median of Column in Real Data Set
We can also compute the median of a column of a data matrix. For this example, I’m going to use the Iris Flower data. Let’s load and inspect the data structure:
data(iris) # Load iris data head(iris) # Head of iris data |
data(iris) # Load iris data head(iris) # Head of iris data
Table 1: First 6 Rows of Iris Data Matrix.
We can apply the median function to the first column of this data frame as follows:
median(iris$Sepal.Length) # Median of first column # 5.8 |
median(iris$Sepal.Length) # Median of first column # 5.8
The median of the column Sepal.Length is 5.8.
Note: We can also calculate the median across all columns and rows of our data with the colMedians and colRows functions. You can learn more about the function in this R programming tutorial.
Example 4: Median by Group
The Iris Flower data set also contains a group indicator (i.e. the column Species). We can combine the aggregate function with the median function to get the median by group:
aggregate(iris$Sepal.Length, # Median by group list(iris$Species), median) # Group.1 x # setosa 5.0 # versicolor 5.9 # virginica 6.5 |
aggregate(iris$Sepal.Length, # Median by group list(iris$Species), median) # Group.1 x # setosa 5.0 # versicolor 5.9 # virginica 6.5
The group setosa has a median of 5.0; the group versicolor has a median of 5.9; and the group virginica has a median of 6.5.
Example 5: Visualize Median in Boxplot & Histogram
In statistical research, the median is often used in figures and graphics. Let’s create another example vector with larger sample size to get some nicer looking graphs:
set.seed(1717) # Set seed x3 <- rpois(1000, 3) # Create larger example vector |
set.seed(1717) # Set seed x3 <- rpois(1000, 3) # Create larger example vector
Medians are typically visualized in boxplots, as you can see based on the following R syntax and Figure 1:
boxplot(x3) # Boxplot with median text(x = 1, y = 3.25, # Add text to boxplot "Median of x3", col = "red") |
boxplot(x3) # Boxplot with median text(x = 1, y = 3.25, # Add text to boxplot "Median of x3", col = "red")
Figure 1: Boxplot with Median in R.
However, we could also draw a median line to other types of plots such as barcharts, scatterplots, histograms and so on. The following R code and Figure 2 show a median line drawn to a histogram:
hist(x3) # Histogram in R abline(v = median(x3), # Add median to histogram col = "red", lwd = 3) |
hist(x3) # Histogram in R abline(v = median(x3), # Add median to histogram col = "red", lwd = 3)
text(x = 5, y = 200, # Add text to histogram
“Median of x3”,
col = “red”)
Figure 2: Histogram with Vertical Median Line in R.
Further Resources & Summary
This tutorial illustrated how to use the median in different data scenarios in the R programming language.
However, in case you want to know about the theoretical research concept of the median, you could have a look at the following YouTube video of the mathantics channel.
The speaker of the video does not only explain the median, but also of the related concepts of the mode and mean. If you are not sure which metric to use for the calculation of an average, this video may be a good help.
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
Furthermore, you might want to have a look at some of the other R tutorials of this website:
- Mean in R
- Mode in R
- colSums, rowSums, colMeans, rowMeans, colMedians & rowMedians in R
- Median Absolute Deviation in R
- Mean by Group in R
- abline Function in R
- summary Function in R
- The R Programming Language
I hope that you at this point know how to use the median command in R. However, if you have any additional questions or comments, don’t hesitate let me know in the comments section below. In addition, you might want to subscribe to my email newsletter for more R tutorials.
Subscribe to my free statistics newsletter:
R Tutorials
abs Function in R
all & any R Functions
Set Aspect Ratio of Plot
attach & detach R Functions
attr, attributes & structure in R
cbind R Command
Change ggplot2 Legend Title
Character to Numeric in R
Check if Object is Defined
col & row sums, means & medians
Complete Cases in R
Concatenate Vector of Strings
Convert Date to Weekday
cumsum R Function
Data Frame Column to Numeric
diff Command in R
difftime R Function
dim Function in R
dir R Function
Disable Scientific Notation
Draw Segments in R
droplevels R Example
Evaluate an Expression
Extract Characters from String
Factor to Numeric in R
Format Decimal Places
get, get0 & mget in R
is.na R Function
is.null Function in R
jitter R Function
Join Data with dplyr Package
length Function in R
lowess R Smoothing Function
max and min Functions in R
NA Omit in R
nchar R Function
ncol Function in R
nrow Function in R
outer Function in R
pairs & ggpairs Plot
parse, deparse & R expression
paste & paste0 Functions in R
pmax and pmin R Functions
polygon Plots in R
pretty R Function
R Find Missing Values
R Functions List (+ Examples)
R NA – Values
R Replace NA with 0
rbind & rbind.fill in R
Read Excel Files in R
readLines, n.readLines & readline
Remove Element from List
Remove Legend in ggplot2
Rename Column Name in R
Replace Last Comma of String
rev R Command
Round Numeric Data in R
Save & Load RData Workspace
scan R Function
setdiff R Function
setNames vs. setnames in R
sink Command in R
Sort, Order & Rank Data in R
sprintf Function in R
Square Root in R
str_c Function of stringr Package
str_sub Function of stringr Package
strptime & strftime Functions
substr & substring R Commands
sweep R Function
Transform Data Frames
union Function in R
unlist in R
weekdays, months, quarters & julian in R
with & within R Functions
Write Excel File in R