Remover todos os caracteres especiais de uma string em R?

Como remover todos os caracteres especiais em uma determinada string em R e replace cada caractere especial por espaço?

Os caracteres especiais para remover são: ~!@#$%^&*(){}_+:"?,./;'[]-=

regex [:punct:] vai fazer metade do trabalho.

Question_2: Mas como remover, por exemplo, estes caracteres de línguas estrangeiras: â í ü Â á ą ę ś ć ?

Answer_2: Substitua [^[:alnum:]] por [^a-zA-Z0-9] em regex ou regexpr :
regex[^a-zA-Z0-9]

Você precisa usar expressões regulares para identificar os caracteres indesejados. Para o código mais facilmente legível, você quer o str_replace_all do pacote stringr , embora o gsub da base R funcione da mesma forma.

A expressão regular exata depende do que você está tentando fazer. Você pode remover apenas os caracteres específicos que forneceu na pergunta, mas é muito mais fácil remover todos os caracteres de pontuação.

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

(O equivalente da base R é gsub("[[:punct:]]", " ", x) .)

Uma alternativa é trocar todos os caracteres não alfanuméricos.

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

Observe que a definição do que constitui uma letra ou um número ou uma marca de pontuação varia ligeiramente dependendo da sua localidade, portanto, você pode precisar experimentar um pouco para obter exatamente o que deseja.

Em vez de usar o regex para remover esses caracteres “loucos”, basta convertê-los em ASCII, o que removerá os acentos, mas manterá as letras.

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

o que resulta em

 [1] "Abcdeacoauu" 

Converta os caracteres especiais em apóstrofo,

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

Abaixo, codifique-o para remover o apóstrofo extra '' '

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

Use a function gsub(..) para replace o caractere especial por um apóstrofo

Intereting Posts