How to Use the fct_relevel() Function in R


In the R programming language, factor variables are variables that hold categorical data and store data in different levels.

Often you may want to change the order of the levels of a factor variable.

One of the easiest ways to do so is by using the fct_relevel() function from the forcats package in R, which is designed to perform this exact task.

The fct_relevel() function uses the following basic syntax:

fct_relevel(.f, …, after = 0L)

where:

  • .f: The name of a factor variable
  • : A function or character levels
  • after: Specifies where the level should be placed after

The following examples show how to use this function in practice to change the levels of a factor variable.

Note: Before using the fct_relevel() function you may need to first install the forcats package by using the following syntax:

install.packages('forcats')

Once the forcats package is installed, you can use the fct_relevel() function to reorder factor levels without encountering any errors.

Example 1: Move Factor Level to Front

Suppose we create the following factor variable named my_teams that contains the names of various basketball teams:

#create factor variable
my_teams <- factor(c('Mavs', 'Nets', 'Nets', 'Kings', 'Mavs', 'Heat'),
                   levels=c('Mavs', 'Nets', 'Heat', 'Kings'))

#view factor variable
my_teams

[1] Mavs  Nets  Nets  Kings Mavs  Heat 
Levels: Mavs Nets Heat Kings

We can see that the my_teams factor variable currently has the following order of levels:

  • Mavs Nets Heat Kings

Suppose instead that we would like to move the Heat to the first position of the factor levels.

We can use the fct_level() function with the following syntax to do so:

library(forcats)

#create factor variable
my_teams <- factor(c('Mavs', 'Nets', 'Nets', 'Kings', 'Mavs', 'Heat'),
                   levels=c('Mavs', 'Nets', 'Heat', 'Kings'))

#move 'Heat' to front of level order
my_teams <- fct_relevel(my_teams, 'Heat')

#view updated factor variable
my_teams

[1] Mavs  Nets  Nets  Kings Mavs  Heat 
Levels: Heat Mavs Nets Kings

Notice that the Heat has been moved to the first position of the factor levels while all other levels have remained in the same positions.

Example 2: Move Factor Level After Specific Level

Once again, suppose we create the following factor variable named my_teams that contains the names of various basketball teams:

#create factor variable
my_teams <- factor(c('Mavs', 'Nets', 'Nets', 'Kings', 'Mavs', 'Heat'),
                   levels=c('Mavs', 'Nets', 'Heat', 'Kings'))

#view factor variable
my_teams

[1] Mavs  Nets  Nets  Kings Mavs  Heat 
Levels: Mavs Nets Heat Kings

Suppose that we would like to move the Heat to the position after 1 of the factor levels.

We can use the fct_level() function with the following syntax to do so:

library(forcats)

#create factor variable
my_teams <- factor(c('Mavs', 'Nets', 'Nets', 'Kings', 'Mavs', 'Heat'),
                   levels=c('Mavs', 'Nets', 'Heat', 'Kings'))

#move 'Heat' to after position 1
my_teams <- fct_relevel(my_teams, 'Heat')

#view updated factor variable
my_teams

[1] Mavs  Nets  Nets  Kings Mavs  Heat 
Levels: Mavs Heat Nets Kings

Notice that Heat has been moved to the position directly after position 1 of the factor levels while all other levels have remained in the same positions.

Note: You can find the complete documentation for the fct_relevel() function from the forcats package here.

Additional Resources

The following tutorials explain how to perform other common tasks in R:

How to Convert Factor to Numeric in R
How to Convert Factor to Character in R
How to Reorder Factor Levels in R

Leave a Reply

Your email address will not be published. Required fields are marked *