我正在尝试在 R 中创建一个程序,用三位数机场代码替换城市名称或机场名称。我想要进行模糊匹配以提供更大的灵活性,因为我试图替换的城市/机场名称的数据来自许多不同的来源。我的问题是,通过模糊匹配左连接,我似乎无法找到一种方法来仅从右表(代码)返回与左表(名称)最接近的匹配。
例如:将城市奥古斯塔 (Augusta, GA) 与奥古斯塔 (Augusta, GA) 和奥古斯塔 (Augusta, ME) 进行匹配并复制数据。我不想限制最大距离,因为我仍然想允许灵活性,但我不能让我的数据重复。我想找到一种方法来进行部分字符串匹配,但只返回最接近的结果。
我尝试过使用 fuzzyjoin 包,但从我所见,没有办法限制只有一场比赛或只有最佳比赛。我知道在 pmatch 中有一个禁止重复的调用,但我找不到使 pmatch 作为连接工作的方法。
data <- stringdist_left_join(data, orig, ignore_case = TRUE)
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码,stringdist 是 R 中 fuzzyjoin 包的函数。数据集“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 …
Run Code Online (Sandbox Code Playgroud)