How to Convert a Factor to Numeric in R

 

Basic R Syntax:

x_num <- as.numeric(as.character(x))

 

More explanations needed? You’ll find all relevant information for the conversion of R factors to numeric in the following tutorial.

 

Example: Convert Factor to Numeric in R

To convert a factor to numeric in R can be a tricky task. In the following, I’m therefore going to explain how to convert a factor vector to numeric properly.

Before we can start, we need to create an example factor vector in R:

set.seed(13579)                                            # Set seed
x <- as.factor(sample(c(3, 5, 6, 9), 100, replace = TRUE)) # Example factor vector

Our factor vector consists of the four categories 3, 5, 6 & 9:

x                                                          # Print x to RStudio console

 

How to convert factor vector to number in R - Example variable


Graphic 1: Example Factor Vector Printed to the RStudio Console

 

So, how can we transform this factor vector to numeric?

x_num <- as.numeric(as.character(x))                       # Convert factor to numeric
x_num                                                      # Print converted x to RStudio console
# 3 9 3 9 5 5 3 9 9 3 9 9 9...

That’s it! Easy, right?

However, please note that – before the conversion to numeric – it is important to transform the factor to character first (as shown in the example above).

I’ll show you why this preliminary step is needed:

x_wrong <- as.numeric(x)                                   # Wrong conversion to numeric
x_wrong                                                    # Print wrongly converted x to RStudio console
# 1 4 1 4 2 2 1 4 4 1 4 4 4...

1? 4?! 22??? What happened?! Why does the converted vector consist of wrong values?

The answer is simple: R automatically assigns the numbers 1, 2, 3, 4, and so on to the categories of our factor. If we want to hinder R from doing so, we need to convert the factor to character first.

Keep this in mind, when you convert a factor vector to numeric! I’ve seen this mistake quite often in the past.

 

Programming Video: Further Examples

Check out the following video, in case you need further explanations and examples for the transformation of factors to numerical vectors. The YouTuber Phil Chan provides a live example in R.

 

 

Alternative Programming Codes

I’ve shown you the most popular way to convert factor to numeric in R. However, there are several alternative ways to achieve this transformation:

 

Alternative 1: The levels R function

x_alt1 <- as.numeric(levels(x)[x])                         # Use the levels R function
x_alt1                                                     # Print to R console

 

Alternative 2: The paste R function

x_alt2 <- as.numeric(paste(x))                             # Use the paste R function
x_alt2                                                     # Print to R console

 

Alternative 3: The unfactor R function of the varhandle package

install.packages("varhandle")                              # Install varhandle package
library("varhandle")                                       # Load varhandle package
 
x_alt3 <- unfactor(x)                                      # Use the unfactor R function
x_alt3                                                     # Print to R console

 

Further Reading

 



 

Leave a Reply

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

Fill out this field
Fill out this field
Please enter a valid email address.

Menu