ComeçarComece de graça

Realizando um join por distância de strings

Unir duas fontes de dados diferentes é uma tarefa muito comum em análise de dados. Sempre que possível, você deve usar valores claramente identificáveis, como um endereço de e-mail, para fazer o join entre duas tabelas. Mas e se a pessoa usuária só informou o nome e você precisa buscá-lo em um banco de usuários? A dificuldade: as pessoas podem abreviar o primeiro ou o último nome, digitar algo errado ou até deixar partes de fora.

No escopo há dois data frames: user_input e database. O primeiro contém a entrada com erros feita pela pessoa usuária e o segundo, os nomes corretos; porém, ambas as fontes de dados contêm os mesmos 100 nomes. Quantos deles você consegue casar usando um join por distância de strings? Ah, e um detalhe: não há method de distância definido, então o padrão, Optimal String Alignment "osa", será usado.

Este exercício faz parte do curso

Expressões Regulares Intermediárias em R

Ver curso

Instruções do exercício

  • Una user_input e database com uma distância máxima entre strings (max_dist) de forma que exatamente oitenta nomes sejam correspondidos com sucesso. Experimente até encontrar a distância máxima correta.
  • Use a nova tabela joined para imprimir uma frase de relatório amigável para humanos.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Join the data frames on a maximum string distance of 2
joined <- stringdist_join(
  user_input,
  database,
  by = c("user_input" = "name"),
  ___ = ___,
  distance_col = "distance",
  ignore_case = TRUE
)

# Print the number of rows of the newly created data frame
print(glue(
  "{n} out of 100 names were matched successfully",
  n = nrow(___)
))
Editar e executar o código