2015-05-08 2 views
0

Я пытаюсь объединить два набора данных со строкой place, которая похожа, но во многих случаях не совсем то же самое.Нечеткое совпадение строк и слияние

Например, в другом наборе данных могут быть такие записи, как Лондон, Великобритания и только Лондон. Я хотел бы иметь соответствующий балл рядом с каждой записью и объединять их по счету подобия (и сливаться, если он больше 0,80).

Есть ли способ объединить два набора данных A и B с переменными place?

Первый набор данных А имеет четыре переменные: name, place, origin, ranking

Второй набор данных B имеет три переменные: ratings, place, destinations, trip time

Я хочу объединить набор данных A и B. набора данных

Окончательный объединенный набор данных должен иметь следующие переменные: name, place, origin, ranking, ratings, destinations, trip time

Я хочу объединиться на основе набора данных A (как левое соединение в SQL). Я хочу, чтобы все записи А с добавленными столбцами из В.

+0

подобный вопрос был задан вопрос минут назад. Если это не поможет, разверните свой вопрос с примерами. http://stackoverflow.com/questions/30129903/how-can-i-fuzzy-match-corporations-names-when-using-two-separate-apis-datab –

+0

Я расширил вопрос, чтобы быть более конкретным. – user3570187

+0

[Как сделать отличный пример воспроизведения R?] (Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – zx8754

ответ

2

stringdist library имеет множество функций, вот один пример использования soundex сходство:

library(stringdist) 

#dummy data 
df1 <- data.frame(ID1=c("london","USA","UK","ball","xyz")) 
df2 <- data.frame(ID2=c("lndon","US","UKS","bull","ttt"), 
        x=1:5) 

#get soundex 
df1$soundex <- phonetic(df1$ID1, method = c("soundex"), 
         useBytes = FALSE) 
df2$soundex <- phonetic(df2$ID2, method = c("soundex"), 
         useBytes = FALSE) 

#merge on soundex column, keep all rows from df1 
merge(df1, df2, by="soundex", all.x=TRUE) 

#output 
# soundex ID1 ID2 x 
# 1 B400 ball bull 4 
# 2 L535 london lndon 1 
# 3 U200 USA US 2 
# 4 U200 USA UKS 3 
# 5 U200  UK US 2 
# 6 U200  UK UKS 3 
# 7 X200 xyz <NA> NA 
Смежные вопросы