问题标签 [fuzzyjoin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
242 浏览

r - 使用两个表中的名称连接 R 中的两个表

嗨,伙计们,我知道在 R 中加入表格相关的问题很少,我尝试了其中的大部分,但它们没有用,就我而言,我有两个表格,第一个(A)有两列(Idcompany_name),70,000 行,第二个(B)有company_name, registration number.....etc 有 10,000,000 行。

我想加入他们的行列,registration number为 A 的所有公司提供服务。

提示,我尝试在 excel 中合并、inner join使用和sqldf,但它没有返回 A 中的所有记录。fuzzyjoinvlookup

0 投票
2 回答
1785 浏览

r - 结合模糊匹配和精确匹配

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

1) 如果通过 Zipcode 匹配,则不考虑街道和城市 2) 如果通过 Address 匹配(包含所有 Zipcode、Street 和 City),它也返回可能的值,在同一邮政编码上还有另一条街道就距离而言,这是足够近的。

可能我需要同时进行两个不同的匹配(一个是模糊的,一个是精确的),但我不确定如何实现它,同时又不会影响我的计算机性能。

以下是 TableAd 的数据示例:

和字典样本:

这是我当前的代码:

我在上面提供的示例中特别发现的问题 - 脚本验证 strCity KanałowaWarszawa 是否存在于字典中,但更改邮政编码时组合地址字符串的 Levenshtein 距离与将街道更改为 Kołowa 时相同,后者的邮政编码与检查的那个。在这里它会返回两个更改,但如果邮政编码只有 2 位或 1 位数字的差异,那么它可能会错误地建议替换街道,而应更改邮政编码。

注意:我正在使用packagespurrr和.dplyrfuzzyjoin

0 投票
1 回答
923 浏览

r - Dplyr 加入最大匹配值,如果不可能完全匹配

我正在尝试在 dplyr 中加入两个表。有时可以精确匹配列年份,但在某些情况下,匹配年份不可用。在这种情况下,我想加入最高年份

如您所见,id 3 不匹配,我尝试了模糊连接包,但我无法在一个列上进行模糊连接,在另一列上进行精确连接:

使用 dplyr 语法在年份变量的最小距离和 id 变量的精确匹配上加入不匹配案例的最有效方法是什么?

0 投票
1 回答
460 浏览

r - 字符串中排列的模糊连接

fuzzyjoin用来跨越政客和他们各自的地区:

在我的例子中,“Fulvio Rossi Ciocca”和“Rossi Ciocca Fulvio”是同一个人。事实上,我的数据集中的所有数据都包含相同的人,但有一些变化,比如“Lennon John”而不是“John Lennon”。

我确实查看了fuzzyjoin文档,但找不到编写此伪代码的工作版本的方法:

0 投票
2 回答
158 浏览

merge - 没有 proc SQL 的模糊连接

再会,

我希望将两个日期合并到下一个最接近的日期。

数据集从 500Mb 到 1G 都是巨大的,所以这proc sql是不可能的。

我有两个数据集。第一个(舰队)有观察结果,第二个有日期和用于进一步处理的代号。像这样:

我想要的是这样的链接表:

与逻辑

Date < CreatedPortalDate and (CreatedPortalDate - date) = min(CreatedPortalDate - date)

我想出的有点笨拙,我正在寻找一种有效/更好的方法来实现这一点。

  • 任何想法如何改进或解决这个问题?
  • 无知的想法:我可以创建distance将存储的哈希表。
  • 数组可能吗?不知何故。

编辑:

  • 通用格式
    • 完毕
  • 十亿行从何而来?
    • 是的,还涉及其他数据,但日期是唯一的链接变量。
  • 排序?
    • 是的,数据已排序,可以再次排序。
  • gen num 日期总是相隔 7 天吗?
    • 不,这是棘手的部分。否则我可以使用weekyear(或其他分箱)作为唯一标识符。
0 投票
0 回答
141 浏览

r - DNA 序列中的模糊匹配

出于 reprex 的目的,我生成了一个名为 random_DNA_tbl 的 tibble,它是 10 个 DNA 序列(100 个碱基)的随机选择。我有一个名为 subseq_tbl 的单独 tibble,其中有 3 个较短的序列与 random_DNA_tbl 中的 3 个序列匹配 100%,但我也想使用从subseq_tbl到random_DNA_tbl中其他序列的序列的模糊匹配。我希望能够使用fuzzyjoin包stringdist_XX_join函数,但是这些似乎不起作用,即使subseq序列实际上是完美匹配并且可以与其他匹配函数一起使用,例如regex_XX_join。

不起作用:

是否有效:

我尝试在 stringdist 中调整 max_dist 参数,但无济于事。任何人都可以阐明这个问题吗?

0 投票
1 回答
129 浏览

r - 在 R 中的许多文章中找到相近的词

我有一个 tibble 表(mydf)(100 行 x 5 列)。文章由许多段落组成。

我想向表中添加新列,如果FirstWord之间的距离接近Article 中的SecondWord 30 个字空间,这给了我TRUE/FALSE 。

我已经按照 StackOverflow 中的这个示例来计算距离 -如何计算单词与文档中特定术语的接近度

我得到这样的表:

如何获得这种格式的结果:

感谢你的帮助 :)

0 投票
0 回答
24 浏览

r - R - 将(周期)长格式时间序列转换为宽格式小时时间序列

如果没有值,我想将以下数据框转换为宽格式的每小时时间序列,填充为零。本质上,我想将带有 start/endperiod 的数据帧转换为每小时的时间序列:

输出:

最后两个条目不是我的错误,但有时数据包含具有相同值的双重条目,但我认为使用“唯一”我应该能够将它们过滤掉。

更多数据信息:

我需要采用宽格式样式的数据,而不是让 EventStart/EventStop 期间的每小时索引具有相同的每小时值,并且如果它不包含零作为值。

要将其转换为宽格式:

格式很好,但不是 EventStart/EventStop,我需要一个每小时连续的时间序列,零作为“填充”。

我能够以我想要的格式创建一个空数据框:

目标输出表应该是这样的:

数据来自的 csv 文件大约 8-9 兆字节,for 循环花费的时间太长。有人建议使用“match_fun”参数进行模糊连接和模糊连接,还有一个检查索引是否在区间内的函数,不幸的是我有点迷路了。

非常感谢!

0 投票
0 回答
690 浏览

r - Fuzzyjoin匹配基于两个不同的列而不是一个?

我想问一个关于fuzzyjoin 包的问题。我对 R 很陌生,我保证在我问这个问题之前,我已经阅读了自述文件并遵循了https://cran.r-project.org/web/packages/fuzzyjoin/index.html上的示例。

我有一个白话名称列表,我想将其与植物物种名称相匹配。我的列表的简单版本如下所示。数据 1 有一个 LocalName 列,其中包含许多白话名称拼写错误。数据 2 是正确的地方名称和物种匹配的表。

我尝试使用 stringdist_left_join 函数,它成功地匹配了许多物种。我通过设置 max_dist=1 是保守的,因为在我的列表中,许多白话名称非常相似。

但是,我有一个问题。从 data1 中可以看出,Item 5 BAIKIAEA SP 实际上匹配的是 data2 的 Species 列,而不是 LocalName。我有很多这样的条目,其中数据 1 中的 LocalName 是白话名称或物种名称的拼写错误,但是,我不确定如何使 stringdist_left_join 匹配两列数据 2 和一列数据 1。我尝试修改代码变成这样的东西:

但它不起作用,引用““LocalName”|“Species”中的错误:操作仅适用于数字、逻辑或复杂类型”。有谁知道这种匹配是否可能?提前致谢!

0 投票
5 回答
1982 浏览

r - 如何在每侧使用多个变量在 R 中进行模糊连接

我想加入两个数据框:

(x>start)&(x<end)为了得到这样的结果,条件如下:

我不想制作一个可能很大的笛卡尔积,然后只选择与条件匹配的几行,我想要一个使用 tidyverse 的解决方案(我对使用 SQL 的解决方案不感兴趣,这将是对失败的承认) . 我想到了“fuzzyjoin”包,但找不到适合我需要的示例:申请条件的函数只有两个参数。我还尝试将“开始”和“结束”放入一个参数中data.frame(z=I(purrr::map2(b$start,b$end,list)),y=b$y) # z y #1 0, 2 a #2 4, 6 b

但是虽然数据看起来不错,但模糊左连接不接受它。

我寻找在更一般情况下工作的解决方案(LHS 上的 n 个变量,RHS 上的 m 个变量,不一定是任意条件的数字)。

更新

我也希望能够在(x=start+1)|(x=end+1)这里表达条件,比如给: