Como remover todos os caracteres especiais da string em R e substituí-los por espaços?
Alguns caracteres especiais a serem removidos são: ~!@#$%^&*(){}_+:"<>?,./;'[]-=
Eu tentei regex
com o [:punct:]
padrão, mas ele remove apenas marcas de pontuação.
Pergunta 2: E como remover caracteres de línguas estrangeiras como â í ü Â á ą ę ś ć
:?
Resposta: Use [^[:alnum:]]
para remover ~!@#$%^&*(){}_+:"<>?,./;'[]-=
e use [^a-zA-Z0-9]
para remover também â í ü Â á ą ę ś ć
nas funções regex
ou regexpr
.
sub
ougsub
funções.Respostas:
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
dostringr
pacote, embora agsub
partir da base R funcione da mesma forma.A expressão regular exata depende do que você está tentando fazer. Você poderia simplesmente remover aqueles caracteres específicos que você deu na pergunta, mas é muito mais fácil remover todos os caracteres de pontuação.
(O equivalente de base R é
gsub("[[:punct:]]", " ", x)
.)Uma alternativa é trocar todos os caracteres não alfanuméricos.
Observe que a definição do que constitui uma letra, um número ou uma marca de pontuação varia um pouco dependendo da sua localidade, portanto, pode ser necessário experimentar um pouco para obter exatamente o que deseja.
fonte
" "
por,""
caso contrário, você terá um espaço em branco vazio na string.â í ü Â á
:??regex
e?regexpr
.[^[:alnum:]]
por[^a-zA-Z0-9]
ou possivelmente\\W
.Em vez de usar regex para remover esses caracteres "loucos", basta convertê-los para ASCII, o que removerá os acentos, mas manterá as letras.
o que resulta em
fonte
iconv(astr, from="UFT-8", to="ASCII//TRANSLIT")
, caso contrário, com personagens francesesç
seria um pouco engraçado.Converta os caracteres especiais em apóstrofos,
Codifique abaixo para remover apóstrofo '' 'extra
Use a
gsub(..)
função para substituir o caractere especial por apóstrofofonte