gpt4 book ai didi

r - 在 R 中进行模糊匹配的更有效方法?

转载 作者:行者123 更新时间:2023-12-04 15:45:12 27 4
gpt4 key购买 nike

我目前正在处理一个包含 200 万行(记录)的数据框。我想确定后续的潜在重复记录。其他人为我编写了一段很长的有效代码,但目前我需要通宵运行。

它使用stringdist 包。据我了解,stringdist 通过将一行与数据框中的所有其他行进行比较来工作。因此,具有 5 行的数据框需要 20 次计算:


第 1 行与第 2 行相比
第 1 行与第 3 行相比
第 1 行与第 4 行相比
第 1 行与第 5 行相比
第 2 行与第 1 行相比
第 2 行与第 3 行相比
第 2 行与第 4 行相比
第 2 行与第 5 行的对比
第 3 行与第 1 行相比
第 3 行与第 2 行相比
第 3 行与第 4 行相比
第 3 行与第 5 行的对比
第 4 行与第 1 行相比
第 4 行与第 2 行相比
第 4 行与第 3 行相比
第 4 行与第 5 行相比
第 5 行与第 1 行相比
第 5 行与第 2 行相比
第 5 行与第 3 行相比
第 5 行与第 4 行的对比

数据帧大小的增加将成倍地增加完成该功能所需的时间。使用我相当大的数据框,显然需要一段时间。

我提出的解决方案是:在将每一行与数据框中的所有其他行进行比较后,是否有办法在未来的计算中忽略这些行?例如,在上面的示例中,第 1 行与第 2 行的比较与第 2 行与第 1 行的比较相同。我们可以删除其中一个计算吗?

因此,使用上面的示例数据框,唯一的计算应该是:

第 1 行与第 2 行相比
第 1 行与第 3 行相比
第 1 行与第 4 行相比
第 1 行与第 5 行相比
第 2 行与第 3 行相比
第 2 行与第 4 行相比
第 2 行与第 5 行的对比
第 3 行与第 4 行相比
第 3 行与第 5 行的对比
第 4 行与第 5 行的对比

这是代码中函数的一部分,用于在各个列中查找这些重复项 - 关于如何修改它的任何想法?

lastName <- stringdist(DataND$SURNAME[rownumber],DataND$SURNAME, method='lv')
firstName <- stringdist(DataND$GIVEN.NAME[rownumber],DataND$GIVEN.NAME, method='lv')
birthDate <- stringdist(DataND$DOB[rownumber],DataND$DOB, method='lv')
streetAddress<-stringdist(DataND$ADDR.1[rownumber],DataND$ADDR.1, method='lv')
suburb <- stringdist(DataND$LOCALITY[rownumber],DataND$LOCALITY, method='lv')

最佳答案

H 1 的想法很棒。另一种选择是 fuzzyjoin-package。

library(fuzzyjoin)
library(dplyr)

df <- tibble(id = seq(1,10),
words = replicate(10, paste(sample(LETTERS, 5), collapse = "")))



stringdist_left_join(df, df, by = c(words = "words"), max_dist = 5, method = "lv", distance_col = "distance") %>%
filter(distance != 0)

# A tibble: 90 x 5
id.x words.x id.y words.y distance
<int> <chr> <int> <chr> <dbl>
1 1 JUQYR 2 HQMFD 5
2 1 JUQYR 3 WHQOM 4
3 1 JUQYR 4 OUWJV 4
4 1 JUQYR 5 JURGD 3
5 1 JUQYR 6 ZMLAQ 5
6 1 JUQYR 7 RWLVU 5
7 1 JUQYR 8 AYNLE 5
8 1 JUQYR 9 AUPVJ 4
9 1 JUQYR 10 JDFEY 4
10 2 HQMFD 1 JUQYR 5
# ... with 80 more rows

到此为止,您已经完成了所有设置,您可以按距离选择和关闭行。 100.000 条记录用了 11 秒。尝试使用 stringdistmatrix() 但是我得到了错误:

Error: cannot allocate vector of size 37.3 Gb

关于r - 在 R 中进行模糊匹配的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160422/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com