Eliminar todos los caracteres especiales de una cadena en R?


¿Cómo eliminar todos los caracteres especiales en una cadena dada en R y reemplazar cada carácter especial con espacio ?

Los caracteres especiales a eliminar son : ~!@#$%^&*(){}_+:"<>?,./;'[]-=

regex [:punct:] va a hacer la mitad del trabajo.

Question_2: Pero cómo eliminar, por ejemplo, estos caracteres de idiomas extranjeros: â í ü Â á ą ę ś ć ?

Answer_2 : Reemplazar [^[:alnum:]] con {[4] {} en[5]} o regexpr:
regex[^a-zA-Z0-9]

Author: Qbik, 2012-04-24

3 answers

Necesita usar expresiones regulares para identificar los caracteres no deseados. Para el código más fácil de leer, desea la str_replace_all desde el stringr paquete, sin embargo gsub desde la base R funciona igual de bien.

La expresión regular exacta depende de lo que esté tratando de hacer. Podrías simplemente eliminar esos caracteres específicos que diste en la pregunta, pero es mucho más fácil eliminar todos los caracteres de puntuación.

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")

(La base R equivalente es gsub("[[:punct:]]", " ", x).)

Una alternativa es intercambiar todos los caracteres no alfanuméricos.

str_replace_all(x, "[^[:alnum:]]", " ")

Tenga en cuenta que la definición de lo que constituye una letra o un número o un signo de puntuación varía ligeramente dependiendo de su ubicación, por lo que es posible que deba experimentar un poco para obtener exactamente lo que desea.

 130
Author: Richie Cotton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-03 06:38:47

En lugar de usar expresiones regulares para eliminar esos caracteres "locos", simplemente conviértalos a ASCII, lo que eliminará los acentos, pero mantendrá las letras.

EDITAR: como se recuerda en los comentarios, puede ser necesario declarar la codificación inicial de su cadena original, generalmente será UTF-8

astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')

Que resulta en

[1] "Abcdeacoauu"
 12
Author: Felipe Alvarenga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-17 14:32:23

Convierte los caracteres especiales en apóstrofo,

Data  <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)

A continuación codifíquelo para eliminar el apóstrofo "' adicional

Data <- gsub("''","" , Data ,ignore.case = TRUE)

Use la función gsub(..) para reemplazar el carácter especial con apóstrofo

 0
Author: UMESH NITNAWARE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-12 07:58:10