Remove special characters from data frame

27k Views Asked by At

I have a matrix that contains the string "Energy per �m". Before the 'm' is a diamond shaped symbol with a question mark in it - I don't know what it is.

I have tried to get rid of it by using this on the column of the matrix:

a=gsub('Energy per �m','',a) 

[and using copy/paste for the first term of gsub], but it does not work.[unexpected symbol in "a=rep(5,Energy per"]. When I try to extract something from the original matrix with grepl I get:

46: In grepl("ref. value", raw$parameter) :
input string 15318 is invalid in this locale

How can I get rid of all this sort of signs? I would like to have only 0-9, A-Z, a-z, / and '. The rest can be zapped.

2

There are 2 best solutions below

6
On BEST ANSWER

There is probably a better way to do this than with regex (e.g. by changing the Encoding).

But here is your regex solution:

gsub("[^0-9A-Za-z///' ]", "", a)
[1] "Energy per m"

But, as pointed out by @JoshuaUlrich, you're better off to use:

gsub("[^[:alnum:]///' ]", "", x)
[1] "Energy per m"
0
On

str_replace_all() is an option if you prefer to use the stringr package:

library(stringr)

x <- 'Energy per �m'

str_replace_all(x, "[^[:alnum:]///' ]", "")
[1] "Energy per m"