Verifica-se com frequência pequenas variações de valores de variáveis do tipo character quando se querem fundir 2 ou mais tabelas de dados obtidas de fontes diferentes. Esta situação pode ter a ver com erros de introdução de dados, mas um outro exemplo frequente corresponde aos nomes de freguesias de Portugal, que devido a repetição de nomes, são introduzidas nas bases de dados com ligeiras variações de nome não standardizadas.
Neste documento apresenta-se uma estratégia para compatibilizar os nomes de duas tabelas, sendo uma a de referência (dfRef) e a outra aquela cujos nomes se querem compatibilizar com a de referência (dfComp).
Para o efeito recorre-se à biblioteca stringdist.

library(stringdist)

Leitura de dados

dfRef <- read.table("tbl_ref.txt", header=TRUE, sep="\t",stringsAsFactors =FALSE, dec=".")
dfComp <- read.table("tbl_comp.txt", header=FALSE, sep="\t", stringsAsFactors =FALSE, dec=".")
dfComp <- na.omit(dfComp)

Função de determinação do string mais próximo.

closestString <- function(compString,refStringVector){
  ### compString - string que pretendo comparar 
  ### refStringVector - vetor de strings de referência
  ###
  
  res <- stringdist(compString, refStringVector)
  res1 <- refStringVector[which(res==min(res))]
  return(list(comp=compString, closestString=res1))
}

Resultados da função para a primeira linha

closestString(dfComp$V1[1], dfRef$freguesia)
## $comp
## [1] "Faial da Terra"
## 
## $closestString
## [1] "Faial da Terra"

Teste da função com as duas tabelas

dfComp$closestString <- rep(NA, dim(dfComp)[1])
for(i in 1:dim(dfComp)[1]){
  dfComp$closestString[i] <- closestString(dfComp$V1[i], dfRef$freguesia)$closestString
}

Plot de confirmação

Como os valores de distância entre os strings das duas colunas da tabela resposta, verifica-se uma correspondência perfeita entre os resultados.

res <- rep(NA, dim(dfComp)[1])
for(i in 1:dim(dfComp)[1]){
  res[i] <- stringdist(dfComp$V1[i],dfComp$closestString[i])
}

library(ggplot2)
res <- data.frame(res)
qplot(y=res, data=res, main="Distância entre strings, por índice", xlab="índice", ylab="Distância entre strings")

which(res>0)
## integer(0)