Convert currency with commas into numeric
The reason why the gsub
didn't work was there was ,
in the column, which is still non-numeric. So when convert to 'numeric' with as.numeric
, all the non-numeric elements are converted to NA
. So, we need to remove both ,
and $
to make it work.
df1$COL1 <- as.numeric(gsub('[$,]', '', df1$COL1))
We match the $
and ,
inside the square brackets ([$,]
) so that it will be considered as that character ($
left alone has special meaning i.e. it signifies the end of the string.) and replace it with ''
.
Or we can escape (\\
) the character ($
) to match it and replace by ''
.
df1$COL1 <- as.numeric(gsub('\\$|,', '', df1$COL1))
We could use parse_number
from readr
package which removes any non-numeric characters.
library(readr)
parse_number(df$COL1)
#[1] 54345 65231 76234