我正在尝试在 R 中创建一个程序,用三位数的机场代码替换城市名称或机场名称。我想做模糊匹配以提供更大的灵活性,因为我试图替换的城市/机场名称的数据来自许多不同的来源。我的问题是,通过左加入模糊匹配,我似乎无法找到一种方法,只从右表(代码)中将最接近的匹配带回左表(名称)。
例如:乔治亚州奥古斯塔市与乔治亚州奥古斯塔和缅因州奥古斯塔进行了匹配,并复制了数据。我不想限制最大距离,因为我仍然希望具有灵活性,但我不能让我的数据被复制。我想找到一种方法来进行部分字符串匹配,但只带回最接近的结果。
我试过使用fuzzyjoin 包,但据我所知,没有办法只限制一个匹配或只限制最佳匹配。我知道在 pmatch 中有一个禁止重复的调用,但我找不到使 pmatch 作为连接工作的方法。
data <- stringdist_left_join(data, orig, ignore_case = TRUE)
这是我正在使用的代码,stringdist 是 R 中的模糊连接包的函数。数据集“数据”包含城市名称、航班数量和其他乘客信息。“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