r - 如何限制模糊连接仅返回一个匹配项

标签 r string-matching one-to-one fuzzy fuzzyjoin

我正在尝试在 R 中创建一个程序,用三位数的机场代码替换城市名称或机场名称。我想做模糊匹配以提供更大的灵活性,因为我试图替换的城市/机场名称的数据来自许多不同的来源。我的问题是,使用模糊匹配左连接,我似乎无法找到一种方法,只能从右表(代码)中将最接近的匹配带回左表(名称)。

例如:城市 Augusta, GA 与 Augusta, GA 和 Augusta, ME 都匹配并复制了数据。我不想限制最大距离,因为我仍然想考虑灵活性,但我不能让我的数据重复。我想找到一种方法来进行部分字符串匹配,但只带回最接近的结果。

我曾尝试使用模糊连接包,但从我所见,没有办法只限制一个匹配或最好的匹配。我知道在 pmatch 中有一个禁止重复的调用,但我找不到使 pmatch 作为连接工作的方法。

data <- stringdist_left_join(data, orig, ignore_case = TRUE)

这是我正在使用的代码,stringdist 是 R 中模糊连接包的函数。数据集“data”包含城市名称、航类数量和其他乘客信息。 “orig”数据集有一列城市/机场名称和机场代码
SAMPLE INPUT
**data table:**
City Name       Passenger Name    Fare Paid
Augusta, GA         Jon            $100
Dallas, TX          Jane           $200
Spokane, WA         Chris          $300

**orig table:**
City Name      Code
Augusta, GA    JCL
Dallas, TX     DAL
Denver, CO     DEN
Seattle, WA    SEA
Spokane, WA    GEG
Austin, TX     AUS
Augusta, ME    PEA
Portland, ME   MEW
Portland, OR   PDX



Desired Result
City Name       Passenger Name    Fare Paid   Code
Augusta, GA         Jon            $100        JCL

最佳答案

没有 reprex 很难判断,但通常,您可以使用 %>% group_by(column_you_joined_by) %>% slice_min(dist)以获得一个“最佳”结果。
引用:
https://github.com/dgrtwo/fuzzyjoin/issues/18
How can I match fuzzy match strings from two datasets?

关于r - 如何限制模糊连接仅返回一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57909676/

相关文章:

html - R:输出带有小计的类似数据透视表

r - Ggplot 网格标签上 2 个不同希腊符号的向量

html - 将 html 输出转换为图像

java - java中正则表达式的近似匹配

string - R中的快速部分字符串匹配

r - 将 r 中的一列从出生日期更改为年龄

java - 比较二进制数据和逐行字符串哪个更快?

mysql - 如何在 phpmyadmin 中建立一对一关系?

java - 父实体作为单向一对一关系中的所有者 Hibernate

c# - Fluent NHibernate 一对一映射