Rename Factor Levels in R (With Examples)


There are two methods you can use to rename factor levels in R:

Method 1: Use levels() from Base R

levels(df$col_name) <- c('new_name1', 'new_name2', 'new_name3')

Method 2: Use recode() from dplyr package

library(dplyr)

data$col_name <- recode(data$col_name, name1 = 'new_name1', 
                                       name2 = 'new_name2',
                                       name3 = 'new_name3')

The following examples show how to use each of these methods in practice.

Method 1: Use levels() Function

Suppose we have the following data frame in R:

#create data frame
df <- data.frame(conf = factor(c('North', 'East', 'South', 'West')),
                 points = c(34, 55, 41, 28))

#view data frame
df

   conf points
1 North     34
2  East     55
3 South     41
4  West     28

#view levels of 'conf' variable
levels(df$conf)

[1] "East"  "North" "South" "West" 

The following code shows how to rename one factor level by name using the levels() function:

#rename just 'North' factor level
levels(df$conf)[levels(df$conf)=='North'] <- 'N'

#view levels of 'conf' variable
levels(df$conf)

[1] "East"  "N"     "South" "West"

And the following code shows how to rename every factor level:

#rename every factor level
levels(df$conf) <- c('N', 'E', 'S', 'W')

#view levels of 'conf' variable
levels(df$conf)

[1] "N" "E" "S" "W"

Example 2: Use recode() Function

The following code shows how to use the recode() function from the dplyr package to rename factor levels:

library(dplyr)

#create data frame
df <- data.frame(conf = factor(c('North', 'East', 'South', 'West')),
                 points = c(34, 55, 41, 28))

#recode factor levels
df$conf <- recode(df$conf, North = 'N',
                           East  = 'E',
                           South = 'S',
                           West  = 'W')

levels(df$conf)

[1] "E" "N" "S" "W"

Note: You can find the complete documentation for the recode() function .

Additional Resources

x
Scroll to Top