How to convert character of percentage into numeric in R
Remove the "%"
, convert to numeric, then divide by 100.
x <- c("10%","5%")
as.numeric(sub("%","",x))/100
# [1] 0.10 0.05
10% is per definition not a numeric vector. Therefore, the answer NA is correct. You can convert a character vector containing these numbers to numeric in this fashion:
percent_vec = paste(1:100, "%", sep = "")
as.numeric(sub("%", "", percent_vec))
This works by using sub to replace the % character by nothing.
If you're a tidyverse
user (and actually also if not) there's now a parse_number
function in the readr
package:
readr::parse_number("10%")
The advantage is generalization to other common string formats such as:
parse_number("10.5%")
parse_number("$1,234.5")