# Convert Character to Factor in R (3 Examples)

This article shows how to convert characters to factors in the R programming language.

Table of contents:

Sound good? Let’s dig in…

## Example 1: Convert Character Vector to Factor

This example shows how to convert a vector with character class to the factor class in the R programming language. Consider the following example vector:

`vec <- c("A", "B", "A", "D", "C", "B")                     # Create example vector`

We can check the class of our vector with the class function:

```class(vec)                                                 # Check class of vector
# "character"```

The RStudio console shows the data type of our vector: It’s a character. Now, we can use the as.factor function to convert this character string to the factor class:

`vec_updated <- as.factor(vec)                              # Convert character vector to factor`

Our updated vector is stored in the data object vec_updated. Again, we can use the class function to check the class of our updated vector:

```class(vec_updated)
# "factor"```

It’s a factor!

## Example 2: Convert Character Column to Factor

We can also convert character variables (i.e. columns) of data frames to the factor type. Consider the following example data frame:

```data <- data.frame(x1 = 1:5,                               # Create example data frame
x2 = letters[1:5],
x3 = c(4, 1, 5, 3, 1),
x4 = c("Male", "Female", "Male", "Male", "Female"),
stringsAsFactors = FALSE)
data                                                       # Print example data frame
# x1 x2 x3     x4
#  1  a  4   Male
#  2  b  1 Female
#  3  c  5   Male
#  4  d  3   Male
#  5  e  1 Female```

As you can see based on the output of the RStudio console, our example data frame contains of five rows and four columns, whereby column 2 and 4 are characters.

Let’s first duplicate this data frame for this example:

`data2 <- data                                              # Replicate example data frame`

Now, we can check the class of the column x2 by applying the class function to this column:

```class(data2\$x2)                                            # Check class of second column
# "character"```

As you can see, our column has the character class. Now, we can apply the as.factor class to replace our character column with the corresponding factor:

`data2\$x2 <- as.factor(data2\$x2)                            # Convert character column to factor`

If we check the class again, we can see that the updated column is a factor:

```class(data2\$x2)                                            # Check class of second column
# "factor"```

## Example 3: Convert All Character Columns of Data Frame to Factor

In Example 2, I explained how to convert one character variable to a factor in R. In this example, I’ll illustrate how to convert all character columns to factor in R.

Let’s duplicate our example data again:

`data3 <- data                                              # Replicate example data frame`

Now, we can use the str function to identify the classes of all our variables:

```str(data3)                                                 # Check class of all columns
# 'data.frame':	5 obs. of  4 variables:
# \$ x1: int  1 2 3 4 5
# \$ x2: chr  "a" "b" "c" "d" ...
# \$ x3: num  4 1 5 3 1
# \$ x4: chr  "Male" "Female" "Male" "Male" ...```

The previous output visualizes that columns 2 and 4 are characters. Now, we can use the as.data.frame function in combination with the unclass function to convert all character columns to factor in R:

```data3 <- as.data.frame(unclass(data3),                     # Convert all columns to factor
stringsAsFactors = TRUE)```

If we apply the str function again, we can see the change:

```str(data3)                                                 # Check class of all columns
# 'data.frame':	5 obs. of  4 variables:
# \$ x1: int  1 2 3 4 5
# \$ x2: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
# \$ x3: num  4 1 5 3 1
# \$ x4: Factor w/ 2 levels "Female","Male": 2 1 2 2 1```

Columns 2 and 4 were converted to factors.

## Video & Further Resources

In case you need more info on the examples of this article, I can recommend to have a look at the following video of my YouTube channel. I explain the contents of this article in the video:

Additionally, you might have a look at the other articles of this website. Some articles are listed here:

In this R article you learned how to change vectors and columns from character string to factor. If you have any additional questions, don’t hesitate to let me know in the comments section.

Subscribe to the Statistics Globe Newsletter

Get regular updates on the latest tutorials, offers & news at Statistics Globe.
I hate spam & you may opt out anytime: Privacy Policy.

#### 13 Comments.Leave new

• Ahmed Rasim BayramoÄŸlu
February 9, 2022 11:08 pm

Thank you so much!

Reply
• You are very welcome Ahmed! ðŸ™‚

Reply
• Hi there
I cannot see a way of converting the two character variables “supplement” and “diet” into factors from the data frame growth.moo.
glimpse(growth.moo)
Rows: 48
Columns: 3
\$ supplement “supergain”, “supergain”, “supergain”, “supergain”, “control”, ~
\$ diet “wheat”, “wheat”, “wheat”, “wheat”, “wheat”, “wheat”, “wheat”, ~
\$ gain 17.37125, 16.81489, 18.08184, 15.78175, 17.70656, 18.22717, 16.~
Can you please help as every time I use the “levels” function it returns a NULL.
Many thanks
John

Reply
• Hey John,

Have you already tried the following code? This should usually work fine:

```growth.moo\$supplement <- as.factor(growth.moo\$supplement)
growth.moo\$diet <- as.factor(growth.moo\$diet)```

Regards,
Joachim

Reply
• Thanks Joachim
I haven’t tried that.
I’ll give it a try tomorrow.
Best regards
John

Reply
• OK great, let me know if it worked! ðŸ™‚

Regards,
Joachim

Reply
• Excellent Joachim!
That worked!
Many thanks indeed.
Regards
John

Reply
• Hey John,

This is great to hear, glad it helped!

Regards,
Joachim

Reply
• Addisu Tesfaye
December 13, 2022 9:02 am

Thank you so much

Reply
• Hey Addisu,

You are welcome. Happy to hear that it helped ðŸ™‚

Regards,
Cansu

Reply
• Like, gracias!!

Reply
• Thank you, Joachim, for providing so many excellent examples.

Reply
• Hey Yu,

Thanks for the kind comment, we are happy to hear that you find our instructions useful.

Regards,
Matthias

Reply
Top