# How to Convert a Character to Numeric in R

**Basic R Syntax:**

x_num <- as.numeric(x) |

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 |

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` |

x # Print example vector to R console

**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... |

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...

That’s basically how to apply the as.numeric function in R. However, if you need some more explanations for the conversion of data types, you might have a look at the following video of my YouTube channel. In the video, I’m explaining how to convert character and factors to numeric in R:

**Please accept YouTube cookies to play this video.** By accepting you will be accessing content from YouTube, a service provided by an external third party.

If you accept this notice, your choice will be saved and the page will refresh.

## 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" |

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"

**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 <- as.data.frame(apply(data, 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" |

data_num <- as.data.frame(apply(data, 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] <- as.data.frame( # 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" |

char_columns <- sapply(data, is.character) # Identify character columns data_chars_as_num <- data # Replicate data data_chars_as_num[ , char_columns] <- as.data.frame( # 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.

**Please accept YouTube cookies to play this video.** By accepting you will be accessing content from YouTube, a service provided by an external third party.

If you accept this notice, your choice will be saved and the page will refresh.

## Further Reading

- How to Convert Factor to Numeric in R
- Convert a Data Frame Column to Numeric
- type.convert R Function
- The R Programming Language

**5**/

**5**(

**1**vote )

### Subscribe to my free statistics newsletter:

## 10 Comments. Leave new

I spent all afternoon scrolling through Stack Overflow trying to figure out how to do this. Once I found it on your site, it took 5 minutes. Thank you!!

Wow that’s an amazing feedback! Thanks Don ðŸ™‚

How can I keep this from converting my rowname chars to numeric?

Hey Don,

You may convert only a subset of your data frame to numeric. Have a look here for more info.

Regards,

Joachim

I just had 3 variables in a 17-variable data set to convert from character to numeric. This didn’t help at all I’m afraid.

Hi Larry,

Could you explain why it didn’t help? Maybe we can figure out a solution for your problem ðŸ™‚

Regards,

Joachim

Hi. How to stop getting the “Coerced to NA” warning?

Hi Vaibhav,

This typically happens when your characters are not representing numbers (e.g. “5!”, “1,55”, “seven”). Have you checked how your data is formatted before converting it?

Regards,

Joachim

I have factors with levels and labels; how do I convert them to numeric

Hey Busola,

I have another article on converting factors to numeric: https://statisticsglobe.com/how-to-convert-a-factor-to-numeric-in-r/

Let me know if this solved your problem.

Regards,

Joachim