小编Prz*_*zeM的帖子

结合模糊和精确匹配

我有两个包含地址的表(街道,城市,邮政编码和两个包含这些连接值的字段),我想对Zipcode进行模糊匹配,但仅适用于具有完全相同StrCity值的情况.我开始首先只选择与字典中的StrCity匹配然后进行模糊匹配的地址,但有两个问题:

1)如果与Zipcode匹配,它不考虑街道和城市2)如果匹配地址(包含所有的Zipcode,Street和City),它也返回可能的值,在同一个邮政编码上有另一条街道在距离方面足够接近.

可能我需要同时做两个不同的匹配(一个模糊和一个精确),但我不知道如何实现它,而不是在性能方面杀死我的计算机.

这是TableAd的数据样本:

StrCity              ID      Zipcode Street       City     Address
Bia?owiejskaWarszawa 5148676 01-459  Bia?owiejska Warszawa 01-459Bia?owiejskaWarszawa
Bukowi?skaWarszawa   6423687 02-730  Bukowi?ska   Warszawa 02-730Bukowi?skaWarszawa
Kana?owaWarszawa     6425093 03-536  Kana?owa     Warszawa 03-536Kana?owaWarszawa
Run Code Online (Sandbox Code Playgroud)

字典样本:

Zipcode Street   City     Address                StrCity
02-882  Agaty    Warszawa 02-882AgatyWarszawa    AgatyWarszawa
03-663  Kana?owa Warszawa 03-663Kana?owaWarszawa Kana?owaWarszawa
03-536  Ko?owa   Warszawa 03-536Ko?owaWarszawa   Ko?owaWarszawa
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码:

TableMatch <- merge(TableAd, TableDict, by="StrCity")
TableMatch <- TableMatch[, -grep("y", colnames(TableMatch))]
names(TableMatch)[names(TableMatch)=="Zipcode.x"] <- "Zipcode"
names(TableMatch)[names(TableMatch)=="Address.x"] <- "Address"

ResultTable <- TableMatch %>% 
  stringdist_left_join(TableDict, by="Address", distance_col="dist", method="lv", max_dist=5, ignore_case = TRUE) %>%
  select(ID, …
Run Code Online (Sandbox Code Playgroud)

r matching dplyr purrr fuzzyjoin

7
推荐指数
2
解决办法
454
查看次数

在两列数据框上使用 adist

我想使用 adist 计算每行中两列值之间的编辑距离。

我或多或少是这样使用它的:

A <- c("mad","car")
B <- c("mug","cat")
my_df <- data.frame(A,B)
my_df$dist <- adist(my_df$A, my_df$B, ignore.case = TRUE)
my_df <- my_df[order(dist),]
Run Code Online (Sandbox Code Playgroud)

最后两行与我的情况相同,但实际数据框看起来有点不同 - 我的原始数据框的列是字符类型,而不是因子。此外, dist 列似乎作为 2 列矩阵返回,我不知道为什么会发生这种情况。

更新:我读了一点,发现我需要将它应用于行,所以我的新代码如下:

apply(my_df, 1, function(d) adist(d[1], d[2]))
Run Code Online (Sandbox Code Playgroud)

它工作正常,但对于我通过列号调用它的原始数据集是不切实际的,我如何在这个函数中引用列名?

r levenshtein-distance

1
推荐指数
1
解决办法
2078
查看次数

标签 统计

r ×2

dplyr ×1

fuzzyjoin ×1

levenshtein-distance ×1

matching ×1

purrr ×1