Last active
January 30, 2024 16:12
-
-
Save jjesusfilho/cee5670f8c68ec82f5bdb2fc1d44d1d4 to your computer and use it in GitHub Desktop.
Busca_fuzzy.R procura a palavra ou frase do segundo vetor que melhor se aproxima do primeiro. Particularmente útil para corrigir nomes de municípios.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#' Procura a palavra ou frase do segundo vetor que melhor | |
#' se aproxima do primeiro. Particularmente útil para | |
#' corrigir nomes de municípios. | |
#' | |
#' @param x Vetor de strings de referência. | |
#' @param y Vetor de strings a serem buscados. | |
#' | |
#' @return vetor com as strings de y próximos | |
#' de x. | |
#' @export | |
#' | |
#' @examples | |
busca_fuzzy<-function(x,y){ | |
x1 <- x |> | |
stringi::stri_trans_general("latin-ascii") |> | |
stringi::stri_trans_tolower() |> | |
stringi::stri_trim_both() |> | |
stringi::stri_replace_all_regex("\\s+","_") | |
y1 <- y |> | |
stringi::stri_trans_general("latin-ascii") |> | |
stringi::stri_trans_tolower() |> | |
stringi::stri_trim_both() |> | |
stringi::stri_replace_all_regex("\\s+","_") | |
purrr::map(x1, ~{ | |
if (is.na(.x)){ | |
d <- NA_character_ | |
} else { | |
a <- stringdist::stringdist(.x,y1, method = 'osa',weight = c(d = 1, i = .1, s = 1, t = 1)) | |
b <- which.min(a) | |
d <- y[b] | |
} | |
d | |
}) |> | |
unlist() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment