8. Transformando e limpando textos

Para construir a sua rotina automatizada de análises de dados, o profissional de vigilância deverá aprender como trabalhar com textos dentro do R. Já vimos que a linguagem de programação R é uma poderosa ferramenta para a preparação e a limpeza de dados. Em programação, informações de texto são denominadas strings (termo em inglês para “cadeia de caracteres”). Uma string não é nada mais do que uma sequência de caracteres que podem ser utilizados como informação em um programa. Conforme vimos no módulo anterior, strings de texto no R são representados por um conjunto de caracteres entre duas aspas.


8.1 Contando caracteres e extraindo textos

O profissional de vigilância em saúde precisará seguir com a sua análise sobre os agravos de notificação. Para isso iremos continuar a explorar a tabela de classificação de agravos CID-10 {CID-10-CATEGORIAS.CSV} exportada do Datasus. Lembramos que esse banco de dados está disponível no menu lateral “Arquivos” no Ambiente Virtual do módulo.

Considere corrigir os textos digitados errados. Isto ocorre muito em campos abertos de formulários na área da saúde onde cada profissional escreve da maneira que deseja as palavras, deixando a coluna de difícil interpretação.

Por exemplo, você já deve ter se deparado com alguma variável NOME, contendo caracteres de nome com texto escrito de diferentes modos: “Fernanda Lima”, “Fernnda Lima”, Fenanda Lima ou “Fernanda Llima”. Para estes casos, o R possui um pacote chamado stringr do tidyverse com funções para a manipulação de texto ou strings de uma forma mais simples e intuitiva, e nos apoiará na correção deste tipo de problema.


Atenção

Para seguir com todas as análises no R, os pacotes devem estar instalados e carregados. Já fizemos esta etapa no início do Módulo. Caso tenha reiniciado seus estudos, vá até o começo deste módulo para instalar e carregar novamente os pacotes que utilizados nesta sessão.


Vamos lá! Acompanhe todos os scripts abaixo e replique-os em seu RStudio.

Primeiramente, importaremos a base de dados para o R utilizando a função read_csv2().

# Importando o banco de dados { `CID-10-CATEGORIAS.CSV` } para o `R`
CID10 <- read_csv2("Dados/CID-10-CATEGORIAS.CSV",
                   locale = locale(encoding = "latin1"))

Em seguida, iremos selecionar as 15 primeiras linhas com valores utilizando a função slice() e realizar uma transformação para um conjunto simples de texto, utilizando a função pull().

# Criando um novo objeto com as seleções feitas
nomes_cid <- CID10 |>
  
  # Selecionar apenas as linhas de interesse (linhas 1 a 15)
  slice(n = 1:15) |> 
  
  # Selecionando apenas a variável "DESCRICAO" e transformando em `character` 
  # simples
  pull(DESCRICAO)

Com este exemplo, percorreremos nesta subsessão alguns dos tratamentos mais utilizados com textos.

Perceba que ao executarmos os comandos acima, retornamos na tela do RStudio (output) dentro do objeto nomes_cid as 15 primeiras linhas da coluna DESCRICAO. Agora utilizaremos esse objeto para obter algumas informações sobre as variáveis de forma a padronizá-las para nossa análise. Esta etapa é crucial para tornar nossa avaliação mais assertiva!

Agora, considere que necessitamos saber quantos caracteres existem em cada linha. No R utilizaremos a função str_length() para esta avaliação. O primeiro argumento da função que deverá ser preenchido é um vetor contendo variáveis de texto (strings).

Acompanhe o script abaixo e replique-o em seu RStudio:

# Contando quantos caracteres existem em cada linha
str_length(nomes_cid)
#>  [1]  6 28 31 10 40 77  8 43 59 57 70 81 30 28 18

Observe que neste caso, a função retornou um vetor contendo o número de caracteres de cada string do vetor utilizado no output. Assim, temos linhas que contêm 6 caracteres, outros com 28, outros com 31 caracteres, e assim por diante.

Considere agora que o profissional de vigilância de Rosas necessita extrair apenas o início de cada doença, e descartar o restante. É possível utilizar a função str_sub(string, start, end), utilizando seus três argumentos:

  1. string: o vetor de texto,
  2. start: a posição de início de extração do texto,
  3. end: a posição de fim de extração do texto.

Acompanhe o script abaixo em que solicitamos ao R que extraia caracteres entre a 1ª até a 11ª posição na linha da tabela {nomes_cid}. Replique o código em seu RStudio:

# Extraindo caracteres entre a 1ª e a 11ª posição da linha
str_sub(nomes_cid, start = 1, end = 11)
#>  [1] "Cólera"      "Febres tifó" "Outras infe" "Shiguelose"  "Outras infe"
#>  [6] "Outras into" "Amebíase"    "Outras doen" "Infecções i" "Diarréia e "
#> [11] "Tuberculose" "Tuberculose" "Tuberculose" "Tuberculose" "Tuberculose"

Observe que obtivemos no output todos os strings cortados entre o 1º e 11º caracteres da linha da variável nomes_cid. Mas perceba que para padronizar as doenças ainda será necessário refinar ainda mais esta extração, de forma a tornar a variável padronizada. Continue o curso para saber mais.

Esta função também é bastante flexível, e você pode definir posições de início de fim para cada elemento da linha ou vetor de texto apontando o lugar exato que deseja extrair os caracteres.

Para o próximo exemplo a posição de início da extração será o primeiro caracter do texto, e a posição de final da extração será o número de caracteres da primeira palavra de cada elemento de nosso vetor, que foi determinado manualmente.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Indicando a posição final da primeira palavra de cada texto
str_sub(nomes_cid, 
        start = 1, 
        end = c(6,6,6,10,6,6,8,6,9,8,11,11,11,11,11))
#>  [1] "Cólera"      "Febres"      "Outras"      "Shiguelose"  "Outras"     
#>  [6] "Outras"      "Amebíase"    "Outras"      "Infecções"   "Diarréia"   
#> [11] "Tuberculose" "Tuberculose" "Tuberculose" "Tuberculose" "Tuberculose"

Veja como o resultado foi mais preciso na padronização das palavras, as quais neste caso são doenças. Foi fácil, não é mesmo?! Treine com o banco de dados da sua vigilância.


O pacote stringr do tidyverse possui todas as suas funções iniciadas com str_. Isso tornará mais fácil carregá-las quando necessário. Pratique!


8.2 Alterando a ordem e reordenando texto

Na maioria das vezes em que filtramos uma planilha ou tabela, quase sempre organizamos uma variável em ordem alfabética. Já vimos que a função arrange() cumpre este objetivo, mas com o pacote stringr, você também poderá reordenar um vetor de strings. Para isso, bastaria utilizar a função str_sort().

Acompanhe o script abaixo e replique-o em seu RStudio:

# Ordenando o objeto {`nomes_cid`} para o formato ascendente (A-Z)
str_sort(nomes_cid)
#>  [1] "Amebíase"                                                                         
#>  [2] "Cólera"                                                                           
#>  [3] "Diarréia e gastroenterite de origem infecciosa presumível"                        
#>  [4] "Febres tifóide e paratifóide"                                                     
#>  [5] "Infecções intestinais virais, outras e as não especificadas"                      
#>  [6] "Outras doenças intestinais por protozoários"                                      
#>  [7] "Outras infecções intestinais bacterianas"                                         
#>  [8] "Outras infecções por Salmonella"                                                  
#>  [9] "Outras intoxicações alimentares bacterianas, não classificadas em outra 
#parte"    
#> [10] "Shiguelose"                                                                       
#> [11] "Tuberculose das vias respiratórias, sem confirmação bacteriológica ou 
#histológica"
#> [12] "Tuberculose de outros órgãos"                                                     
#> [13] "Tuberculose do sistema nervoso"                                                   
#> [14] "Tuberculose miliar"                                                               
#> [15] "Tuberculose respiratória, com confirmação bacteriológica e histológica"

Agora, vamos ordenar o texto de forma decrescente (Z-A). Esta ação será possível ao adicionarmos o argumento decreasing = TRUE.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Ordenando o objeto {`nomes_cid`} para o formato decrescente (Z-A)
str_sort(nomes_cid, decreasing = TRUE)
#>  [1] "Tuberculose respiratória, com confirmação bacteriológica e histológica"           
#>  [2] "Tuberculose miliar"                                                               
#>  [3] "Tuberculose do sistema nervoso"                                                   
#>  [4] "Tuberculose de outros órgãos"                                                     
#>  [5] "Tuberculose das vias respiratórias, sem confirmação bacteriológica ou 
# histológica"
#>  [6] "Shiguelose"                                                                       
#>  [7] "Outras intoxicações alimentares bacterianas, não classificadas em outra 
# parte"    
#>  [8] "Outras infecções por Salmonella"                                                  
#>  [9] "Outras infecções intestinais bacterianas"                                         
#> [10] "Outras doenças intestinais por protozoários"                                      
#> [11] "Infecções intestinais virais, outras e as não especificadas"                      
#> [12] "Febres tifóide e paratifóide"                                                     
#> [13] "Diarréia e gastroenterite de origem infecciosa presumível"                        
#> [14] "Cólera"                                                                           
#> [15] "Amebíase"

Observe em seu output que a palavra “Amebíase” passou da primeira posição para a última em apenas uma linha de comando str_sort(nomes_cid, decreasing = TRUE).

Agora vamos aprender a unir palavras e outros textos!

8.3 Unindo textos

Com a linguagem R também será possível unir um conjunto de palavras em um único string. Para esta ação iremos utilizar a função str_c(), do pacote stringr.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Unindo *strings* para a formação da palavra "Tuberculose"
str_c("Tuber","culo","se")
#> [1] "Tuberculose"

Observe que todos os strings são unidos sem qualquer tipo de separação entre si. Esta é a definição padrão da função str_c(). Mas, e se quiséssemos definir que queremos que cada string seja separado por um espaço?

Para responder a esta pergunta adicionaremos o argumento sep = " " (igual à vazio). E ainda utilizaremos como argumento um conjunto de palavras, formando uma expressão no final.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Unindo *strings* incluindo espaço entre elas
# adicionaremos o argumento `sep = " "`
str_c("Tuberculose","respiratória,","com","confirmação",
      "bacteriológica","e histológica", sep = " ")
#> [1] "Tuberculose respiratória, com confirmação bacteriológica e histológica"

Perceba que nos dois exemplos que praticamos cada string é o próprio argumento da função, mas necessitam estar separados por uma vírgula.

Lembre-se que é uma boa prática quando utilizamos uma linguagem de programação salvar as modificações realizadas em um novo objeto. Neste caso ele será do tipo vetor e chamaremos de {agravo}.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Salvando as modificações no objeto {`agravo`}
agravo <- c("Tuberculose","respiratória,","com","confirmação",
            "bacteriológica","e histológica")

É possível com o R unirmos o vetor em um único string de texto. Para isso devemos utilizar o argumento collapse() e necessitamos definir novamente uma separação por espaço, indicando por um espaço entre duas aspas (" "). Acompanhe o script abaixo e replique-o em seu RStudio:

# Unindo *strings* armazenadas no objeto {`agravo`}
# em um único *string* de texto
str_c(agravo, collapse = " ")
#> [1] "Tuberculose respiratória, com confirmação bacteriológica e histológica"

Pronto! Agora você já consegue separar e unir textos ou palavras da forma necessária para suas análises. Pratique!


Imagine que você possui uma lista de nomes de pacientes de uma UBS e necessita listar apenas os primeiros nomes de cada um deles. Como você faria?

Basta utilizar a função word() do pacote stringr. Acompanhe o script de exemplo abaixo e replique-o em seu RStudio:

# Criando um vetor de nomes
nomes <- c(
    "Caroline Nogueira",
    "Cauã Vieira Gomes",
    "Leandro Mendes",
    "Luigi Aragão",
    "Isabella da Rocha",
    "Luiza Rezende Silva Lopes"
  )

# Extraindo o primeiro nome
word(nomes, 1)
#> [1] "Caroline" "Cauã"     "Leandro"  "Luigi" 

"Isabella" "Luiza"


8.4 Transformando textos

Agora que já aprendemos a importância das etapas de extração, ordenação, junção e separação de textos para o tratamento e transformação dos dados , vamos ampliar mais um pouco as possibilidades de uso do pacote stringr.

Com o pacote stringr podemos realizar operações que modificam os caracteres facilmente, como por exemplo, transformar letras maiúsculas em minúsculas, ou formato de título, ou formato de frase. O formato de título ocorre quando queremos que apenas a primeira letra de cada palavra esteja como maiúscula, enquanto o formato de frase transforma apenas a primeira letra em maiúscula, enquanto as restantes são minúsculas.

Estas ações são fundamentais quando estamos preparando nossos dados para serem analisados tornando nossa análise segura e rápida. Para isso, utilizamos respectivamente as funções str_to_upper(), str_to_lower(), str_to_title(), e str_to_sentence().

Para apresentação deste pacote iremos utilizar o objeto criado no tópico anterior: nomes_cid. Primeiro, iremos transformar todos as letras em maiúsculas, utilizando a função str_to_upper().

Acompanhe o script abaixo e replique-o em seu RStudio:

# Transformando todos as letras em maiúsculas
str_to_upper(nomes_cid)
#>  [1] "CÓLERA"                                                                           
#>  [2] "FEBRES TIFÓIDE E PARATIFÓIDE"                                                     
#>  [3] "OUTRAS INFECÇÕES POR SALMONELLA"                                                  
#>  [4] "SHIGUELOSE"                                                                       
#>  [5] "OUTRAS INFECÇÕES INTESTINAIS BACTERIANAS"                                         
#>  [6] "OUTRAS INTOXICAÇÕES ALIMENTARES BACTERIANAS, NÃO CLASSIFICADAS EM OUTRA 
# PARTE"    
#>  [7] "AMEBÍASE"                                                                         
#>  [8] "OUTRAS DOENÇAS INTESTINAIS POR PROTOZOÁRIOS"                                      
#>  [9] "INFECÇÕES INTESTINAIS VIRAIS, OUTRAS E AS NÃO ESPECIFICADAS"                      
#> [10] "DIARRÉIA E GASTROENTERITE DE ORIGEM INFECCIOSA PRESUMÍVEL"                        
#> [11] "TUBERCULOSE RESPIRATÓRIA, COM CONFIRMAÇÃO BACTERIOLÓGICA E HISTOLÓGICA"           
#> [12] "TUBERCULOSE DAS VIAS RESPIRATÓRIAS, SEM CONFIRMAÇÃO BACTERIOLÓGICA OU 
# HISTOLÓGICA"
#> [13] "TUBERCULOSE DO SISTEMA NERVOSO"                                                   
#> [14] "TUBERCULOSE DE OUTROS ÓRGÃOS"                                                     
#> [15] "TUBERCULOSE MILIAR"

Como resultado, você obtém todos os caracteres de texto de seu vetor em letras maiúsculas.

Agora, vamos transformar todos as letras em minúsculas, utilizando a funçãostr_to_lower(). Acompanhe o script abaixo e replique-o em seu RStudio:

# Transformando todos as letras em minúsculas
str_to_lower(nomes_cid)
#>  [1] "cólera"                                                                           
#>  [2] "febres tifóide e paratifóide"                                                     
#>  [3] "outras infecções por salmonella"                                                  
#>  [4] "shiguelose"                                                                       
#>  [5] "outras infecções intestinais bacterianas"                                         
#>  [6] "outras intoxicações alimentares bacterianas, não classificadas em outra 
# parte"    
#>  [7] "amebíase"                                                                         
#>  [8] "outras doenças intestinais por protozoários"                                      
#>  [9] "infecções intestinais virais, outras e as não especificadas"                      
#> [10] "diarréia e gastroenterite de origem infecciosa presumível"                        
#> [11] "tuberculose respiratória, com confirmação bacteriológica e histológica"           
#> [12] "tuberculose das vias respiratórias, sem confirmação bacteriológica ou 
# histológica"
#> [13] "tuberculose do sistema nervoso"                                                   
#> [14] "tuberculose de outros órgãos"                                                     
#> [15] "tuberculose miliar"

Necessitaremos corrigir a escrita, transformando todos as letras em frases, ou seja, vamos deixar apenas a primeira maiúscula e o restante das palavras em minúsculas utilizando a função str_to_sentence().

Acompanhe o script abaixo e replique-o em seu RStudio:

# Transformando apenas a primeira maiúscula e restante das palavras em minúsculas
str_to_sentence(nomes_cid)
#>  [1] "Cólera"                                                                           
#>  [2] "Febres tifóide e paratifóide"                                                     
#>  [3] "Outras infecções por salmonella"                                                  
#>  [4] "Shiguelose"                                                                       
#>  [5] "Outras infecções intestinais bacterianas"                                         
#>  [6] "Outras intoxicações alimentares bacterianas, não classificadas em outra 
# parte"    
#>  [7] "Amebíase"                                                                         
#>  [8] "Outras doenças intestinais por protozoários"                                      
#>  [9] "Infecções intestinais virais, outras e as não especificadas"                      
#> [10] "Diarréia e gastroenterite de origem infecciosa presumível"                        
#> [11] "Tuberculose respiratória, com confirmação bacteriológica e histológica"           
#> [12] "Tuberculose das vias respiratórias, sem confirmação bacteriológica ou 
# histológica"
#> [13] "Tuberculose do sistema nervoso"                                                   
#> [14] "Tuberculose de outros órgãos"                                                     
#> [15] "Tuberculose miliar"

Mas e se você necessitasse corrigir erros nos textos? Na rotina de vigilância em saúde, ao manipular bancos de dados com campos de preenchimento de texto aberto - como por exemplo os campos “observação” - é comum observarmos uma mesma palavra grafada de diferentes formas. Vamos aprender aqui como corrigir estes problemas de escrita.

Imagine que, analisando o campo de descrição do campo “observação” da notificação de uma doença ou agravo, você observou que alguns dos registros contêm de maneira frequente a palavra “Infecções” e ao exportar o banco de dados ela aparece escrita de diferentes maneiras:

"Infecções" (escrita corretamente), "Infeccões" (sem o cedilha), "Infecçoes" (sem o acento) e "Infeccoes" (sem acento e cedilha).

Sabemos que, neste caso, todas essas grafias se referem a uma mesma palavra.

Mas você deve estar se perguntando: “Como podemos padronizar esta palavra em nossos bancos?”. Uma solução bastante simples é padronizarmos utilizar a palavra sem nenhum acento ou caractere especial (no caso, o “ç”). Isto pode ser feito utilizando a função stri_trans_general() do pacote stringi. O segundo argumento (id = "Latin-ASCII") indica a transformação de caracteres latinos para o padrão ASCII, que será responsável pela padronização dos caracteres com símbolos especiais para letras simples.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Vetor com diferentes grafias
nomes <- c("infecções", "infeccões", "infecçoes", "infeccoes")

# Transformação das letras especiais ou com acentuação
stri_trans_general(nomes, id = "Latin-ASCII")
#> [1] "infeccoes" "infeccoes" "infeccoes" "infeccoes"

Veja que como resultado você obtém todas as palavras escritas da mesma maneira.

Quase sempre precisamos obter informações de campos abertos de formulários, seja porque possuem informações sobre o tratamento do paciente ou sobre quem o atendeu, ou mesmo de sinais e sintomas que não puderam ser adicionados em campos fechados. Agora você é capaz de resolver o problema com a grafia dos campos de “observação” de formulários na área da saúde. Pratique!


8.5 Identificando padrões

E se você quisesse saber quantas vezes a palavra “tuberculose” foi digitada no campo observação de um formulário? Ou mesmo, se você necessita avaliar quais os agravos em que esta palavra foi descrita?

Para responder a essas perguntas, iremos te ensinar como identificar padrões em textos utilizando o pacote stringr e a sua função str_subset(). Esta função possui dois argumentos principais:

  • string: um string ou vetor de strings,
  • pattern: o padrão a ser identificado.

Vamos praticar avaliando o vetor de nomes da CID ({nomes_cid}) criado anteriormente. Observe em seu output a visualização das linhas que contém a palavra “Tuberculose”.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Extraindo linhas onde a palavra "Tuberculose" aparece
str_subset(nomes_cid, pattern = "Tuberculose")
#> [1] "Tuberculose respiratória, com confirmação bacteriológica e histológica"           
#> [2] "Tuberculose das vias respiratórias, sem confirmação bacteriológica ou 
# histológica"
#> [3] "Tuberculose do sistema nervoso"                                                   
#> [4] "Tuberculose de outros órgãos"                                                     
#> [5] "Tuberculose miliar"

Para ignorar as letras maiúsculas e minúsculas é possível utilizar a função fixed() dentro do argumento pattern. Essa função possui o argumento ignore_case (ignorar maiúsculas ou minúsculas). Acompanhe o script abaixo e replique-o em seu RStudio:

# Extraindo linhas onde a palavra "tuberculose" aparece, independente se
# maiúscula ou minúscula
str_subset(nomes_cid, pattern = fixed("tuberculose", ignore_case = TRUE))
#> [1] "Tuberculose respiratória, com confirmação bacteriológica e histológica"           
#> [2] "Tuberculose das vias respiratórias, sem confirmação bacteriológica ou 
# histológica"
#> [3] "Tuberculose do sistema nervoso"                                                   
#> [4] "Tuberculose de outros órgãos"                                                     
#> [5] "Tuberculose miliar"

Como resultado, você verá um novo vetor contendo apenas os elementos descritos na expressão escolhida.


A função str_detect() procura pelo padrão em qualquer posição do texto. Existem duas funções alternativas que você pode utilizar quando quer encontrar padrões no início ou ao final do texto. Elas são respectivamente str_start() e str_end(). Neste exemplo, iremos procurar pela palavra independente se for maiúscula ou minúscula.

Acompanhe o script abaixo e replique-o em seu RStudio:

CID10 |> 
  
  # Utilizando a função `filter()` com a função 
  # `str_stars()`
  filter(
    str_starts(
      
      # Selecionando a variável usada para encontrar 
      # palavras no início da frase
      string = DESCRICAO,
      
      # Definindo a palavra a ser pesquisada e ignorando 
      # se maiúscula ou minúscula
      pattern = fixed("outras", ignore_case = TRUE)
      )
    ) |> 
  
    # Selecionando as variáveis que queremos utilizar 
    # com a função `select()`
  select(CAT, DESCRICAO)
#> # A tibble: 179 × 2
#>    CAT   DESCRICAO                                                              
#>    <chr> <chr>                                                                  
#>  1 A02   Outras infecções por Salmonella                                        
#>  2 A04   Outras infecções intestinais bacterianas                               
#>  3 A05   Outras intoxicações alimentares bacterianas, 
# não classificadas em outr…
#>  4 A07   Outras doenças intestinais por protozoários                            
#>  5 A28   Outras doenças bacterianas zoonóticas não 
# classificadas em outra parte 
#>  6 A41   Outras septicemias                                                     
#>  7 A48   Outras doenças bacterianas não classificadas 
# em outra parte            
#>  8 A53   Outras formas e as não especificadas da 
# sífilis                        
#>  9 A56   Outras infecções causadas por clamídias 
# transmitidas por via sexual    
#> 10 A63   Outras doenças de transmissão 
# predominantemente sexual, não classifica…
#> # … with 169 more rows

Para selecionar apenas quando uma expressão ocorre ao final do string, utilize str_ends() e para buscar no início utilize str_stars(). Acompanhe o script abaixo e replique-o em seu RStudio:

CID10 |> 
  
  # Utilizando a função `filter()` com a função 
  # `str_ends()`
  filter(
    str_ends(
      
      # Definindo a variável usada para encontrar 
	  # palavras no final da frase
      string = DESCRICAO,
      
      # Definindo a palavra a ser pesquisada e ignorando 
	  # se maiúscula ou minúscula
      pattern = fixed("bacterianas", ignore_case = TRUE)
      )
    ) |> 
  
    # Selecionando as variáveis que queremos utilizar 
	# com a função `select()`
  select(CAT, DESCRICAO)
#> # A tibble: 2 × 2
#>   CAT   DESCRICAO                               
#>   <chr> <chr>                                   
#> 1 A04   Outras infecções intestinais bacterianas
#> 2 Y58   Efeitos adversos de vacinas bacterianas

Pronto, agora você já sabe como seria refinar a busca de palavras em campos abertos de autopreenchimento.


8.6 Substituindo valores de texto

O pacote stringr apresenta diversas possibilidades de transformação de textos. A mais simples dela permite que uma substituição de caracteres seja feita de acordo com a posição dos caracteres no string.

Imagine que a frase “Tuberculose respiratória, com confirmação bacteriológica e histológica” foi escrita de maneira errônea e você necessita substituir o texto contido nela devendo trocar a palavra “com” pela palavra “sem”. Para isso utilizaremos a função str_replace().

Esta função busca no texto a expressão de interesse e a substitui diretamente, sem necessitar localizar a posição do caracterer na palavra a ser substituida. Vamos praticar! Você deverá utilizar os três argumentos de str_replace():

  • string: string ou vetor de strings que será utilizado para a substituição,
  • pattern: o padrão de texto a ser identificado para substituição,
  • replacement: o string de texto que irá substituir o padrão.

É importante ressaltar também que esta função exige o uso do operador <- acompanhado da expressão que será utilizada para a substituição. Veja abaixo como ficaria a substituição da palavra “com” pelo termo “sem”, utilizando a função str_replace().

Acompanhe o script e replique-o em seu RStudio:

# Criando um vetor de texto
agravo <- "Tuberculose respiratória, com confirmação bacteriológica e histológica"

# Substituindo palavras
str_replace(agravo, pattern = "com", replacement = "sem")
#> [1] "Tuberculose respiratória, sem confirmação bacteriológica e histológica"

Note que a função str_replace() irá substituir apenas a primeira vez em que encontrar um padrão. Para que possamos substituir um padrão todas as vezes que ele aparecer no texto, utilize a função str_replace_all(). No exemplo a seguir, vamos utilizar o mesmo agravo visto no último exemplo e substituir todas as expressões contendo o acento “ó” pela vogal “o”, sem acento.

Acompanhe o script abaixo e replique-o em seu RStudio:

# Criando um vetor de texto
agravo <- "Tuberculose respiratória, com confirmação bacteriológica e histológica"

# Substituindo palavras
str_replace_all(agravo, pattern = "ó", replacement = "o")
#> [1] "Tuberculose respiratoria, com confirmação bacteriologica e histologica"