How to Convert a Character to Numeric in R


Basic R Syntax:

x_num <- as.numeric(x)


Do you need more explanations? In the following article, I’ll provide you with all important information for the conversion of character vectors to numeric in R.


Example: Convert Character to Numeric in R

Before we can dive into the transformation of a character variable to numeric, we need to create an example character in R. Consider the following vector:

set.seed(55555)                                              # Set seed
x <- as.character(sample(c(2, 5, 7, 8), 50, replace = TRUE)) # Example character vector

Our string consists of the four character values 2, 5, 7 & 8:

x                                                            # Print example vector to R console


How to Convert Character to Numeric Example Vector

Graphic 1: Example Character String Printed to the RStudio Console


Now, we can continue with the important part – How to convert this character string to numeric?

No Problem:

x_num <- as.numeric(x)                                 # Convert string to numeric in R
x_num                                                  # Print converted x to the console
# 8 7 5 8 2 5 2 5 2 7 7 7 7...


Convert All Characters of a Data Frame to Numeric

As you have seen, to convert a vector or variable with the character class to numeric is no problem. However, sometimes it makes sense to change all character columns of a data frame or matrix to numeric.

Consider the following R data.frame:

x1 <- c("5", "2", "7", "5")                            # Character
x2 <- c("77", "23", "84", "11")                        # Another character
x3 <- as.factor(c("4", "1", "1", "8"))                 # Factor
x4 <- c(3, 3, 9, 7)                                    # Numeric
data <- data.frame(x1, x2, x3, x4,                     # Create data frame
                   stringsAsFactors = FALSE)
sapply(data, class)                                    # Print classes of all colums
#          x1          x2          x3          x4 
# "character" "character"    "factor"   "numeric"


Data Frame with Character, Factor & Numeric Columns

Table 1: Example Data Frame with Different Variable Classes


With the following R code, you are able to recode all variables – no matter which variable class – of a data frame to numeric:

data_num <-, 2, as.numeric))  # Convert all variable types to numeric
sapply(data_num, class)                                # Print classes of all colums
#        x1        x2        x3        x4 
# "numeric" "numeric" "numeric" "numeric"


However, in many situations it is better to convert only character columns to numeric (i.e. not column X3, since this column should be kept as factor). You could do that with the following code in R:

char_columns <- sapply(data, is.character)             # Identify character columns
data_chars_as_num <- data                              # Replicate data
data_chars_as_num[ , char_columns] <-   # Recode characters as numeric
  apply(data_chars_as_num[ , char_columns], 2, as.numeric))
sapply(data_chars_as_num, class)                       # Print classes of all colums
#        x1        x2        x3        x4 
# "numeric" "numeric"  "factor" "numeric"


Example Video: How to Change Variable Types

Further examples needed? Have a look at the following R Programming tutorial of the YouTube Channel LearnR. The speaker discusses different data transformations from one data class to another.



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.