我正在尝试用字符串place合并两个数据集,它很相似,但在许多情况下并不完全相同。
例如,在另一个数据集中可以有伦敦、英国和仅伦敦这样的记录。我希望在每个记录旁边有一个匹配的分数,并根据相似性分数合并它们(如果它大于.80,则合并)。
有没有办法用变量place合并两个数据集A和B?
第一个数据集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添加的列。
发布于 2015-05-09 04:16:15
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> NAhttps://stackoverflow.com/questions/30131088
复制相似问题