Changing factor levels with dplyr mutate

user3393472 picture user3393472 · Jan 28, 2015 · Viewed 100.3k times · Source

This is probably simple and I feel stupid for asking. I want to change the levels of a factor in a data frame, using mutate. Simple example:

library("dplyr")
dat <- data.frame(x = factor("A"), y = 1)
mutate(dat,levels(x) = "B")

I get:

Error: Unexpected '=' in "mutate(dat,levels(x) ="

Why is this not working? How can I change factor levels with mutate?

Answer

dpprdan picture dpprdan · Sep 22, 2016

With the forcats package from the tidyverse this is easy, too.

mutate(dat, x = fct_recode(x, "B" = "A"))