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
Instruções do exercício
- Una
user_inputedatabasecom 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
joinedpara 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(___)
))