我正在尝试将两个数据集合并为一个字符串place
,该字符串类似但在许多情况下并不完全相同。
例如,在其他数据集中可能会有像伦敦,英国和伦敦这样的记录。我想在每个记录旁边有一个匹配的分数,并将它们合并在相似度分数上(如果它大于.80则合并)。
有没有办法将两个数据集A和B与变量place
合并?
第一个数据集A有四个变量:name, place, origin, ranking
第二个数据集B有三个变量:ratings, place, destinations, trip time
我想合并数据集A和数据集B.
最终合并数据集应具有以下变量:
name, place, origin, ranking, ratings, destinations, trip time
我想基于数据集A进行合并(如SQL中的左连接)。我希望A的所有记录都添加了来自B的列。
答案 0 :(得分: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