Processamento de Texto e Strings

Author

Jean Resende

No dia a dia, é muito comum trabalharmos com textos. Nomes, descrições, códigos. Funções são excelentes para padronizar e manipular esses textos.

Problema: Você tem uma lista de nomes de pacientes ou amostras, mas alguns estão em letras minúsculas, outros em maiúsculas, e alguns têm espaços extras no início ou no final. Para uma análise consistente, você precisa padronizá-los.

# Usando funções nativas do R para processamento de texto:

nomes_brutos <- c("  maria silva  ", "JOAO PEREIRA ", " ana souza", "BRUNO")

print("Nomes originais:")
[1] "Nomes originais:"
print(nomes_brutos)
[1] "  maria silva  " "JOAO PEREIRA "   " ana souza"      "BRUNO"          
# 1. Remover espaços em branco no início e fim (função trimws())
nomes_sem_espacos <- trimws(nomes_brutos)
print("\nNomes sem espaços extras:")
[1] "\nNomes sem espaços extras:"
print(nomes_sem_espacos)
[1] "maria silva"  "JOAO PEREIRA" "ana souza"    "BRUNO"       
# 2. Converter para a primeira letra maiúscula e o restante minúscula (função própria!)
# O R não tem uma função nativa para isso diretamente, então vamos criar a nossa!
primeira_maiuscula <- function(texto) {
  # Primeiro, convertemos tudo para minúsculas
  texto_minusculo <- tolower(texto)
  
  # Pegamos a primeira letra e a transformamos em maiúscula
  primeira_letra <- toupper(substr(texto_minusculo, 1, 1))
  
  # Pegamos o restante do texto (da segunda letra em diante)
  resto_texto <- substr(texto_minusculo, 2, nchar(texto_minusculo))
  
  # Juntamos tudo
  texto_final <- paste0(primeira_letra, resto_texto)
  return(texto_final)
}

# Aplicando nossa função (usaremos um laço ou apply para múltiplos nomes depois!)
nomes_padronizados <- sapply(nomes_sem_espacos, primeira_maiuscula)
# O sapply é uma função que aplica uma função a cada elemento de um vetor/lista.
# Veremos mais sobre ele em aulas futuras, mas aqui ele já é útil!

cat("\nNomes padronizados (primeira letra maiúscula, sem espaços):")

Nomes padronizados (primeira letra maiúscula, sem espaços):
print(nomes_padronizados)
   maria silva   JOAO PEREIRA      ana souza          BRUNO 
 "Maria silva" "Joao pereira"    "Ana souza"        "Bruno" 
# Percebeu como criamos nossa própria "ferramenta" para um problema específico?