问题标签 [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.
r - 使用两个表中的名称连接 R 中的两个表
嗨,伙计们,我知道在 R 中加入表格相关的问题很少,我尝试了其中的大部分,但它们没有用,就我而言,我有两个表格,第一个(A)有两列(Id
和company_name
),70,000 行,第二个(B)有company_name
, registration number
.....etc 有 10,000,000 行。
我想加入他们的行列,registration number
为 A 的所有公司提供服务。
提示,我尝试在 excel 中合并、inner join
使用和sqldf
,但它没有返回 A 中的所有记录。fuzzyjoin
vlookup
r - 结合模糊匹配和精确匹配
我有两个包含地址的表(街道、城市、邮政编码和两个包含这些值的字段),我想对邮政编码进行模糊匹配,但仅适用于具有完全相同 StrCity 值的情况。我首先从字典中仅选择与 StrCity 匹配的地址,然后进行模糊匹配,但有两个问题:
1) 如果通过 Zipcode 匹配,则不考虑街道和城市 2) 如果通过 Address 匹配(包含所有 Zipcode、Street 和 City),它也返回可能的值,在同一邮政编码上还有另一条街道就距离而言,这是足够近的。
可能我需要同时进行两个不同的匹配(一个是模糊的,一个是精确的),但我不确定如何实现它,同时又不会影响我的计算机性能。
以下是 TableAd 的数据示例:
和字典样本:
这是我当前的代码:
我在上面提供的示例中特别发现的问题 - 脚本验证 strCity KanałowaWarszawa 是否存在于字典中,但更改邮政编码时组合地址字符串的 Levenshtein 距离与将街道更改为 Kołowa 时相同,后者的邮政编码与检查的那个。在这里它会返回两个更改,但如果邮政编码只有 2 位或 1 位数字的差异,那么它可能会错误地建议替换街道,而应更改邮政编码。
注意:我正在使用packagespurrr
和.dplyr
fuzzyjoin
r - Dplyr 加入最大匹配值,如果不可能完全匹配
我正在尝试在 dplyr 中加入两个表。有时可以精确匹配列年份,但在某些情况下,匹配年份不可用。在这种情况下,我想加入最高年份
如您所见,id 3 不匹配,我尝试了模糊连接包,但我无法在一个列上进行模糊连接,在另一列上进行精确连接:
使用 dplyr 语法在年份变量的最小距离和 id 变量的精确匹配上加入不匹配案例的最有效方法是什么?
r - 字符串中排列的模糊连接
我fuzzyjoin
用来跨越政客和他们各自的地区:
在我的例子中,“Fulvio Rossi Ciocca”和“Rossi Ciocca Fulvio”是同一个人。事实上,我的数据集中的所有数据都包含相同的人,但有一些变化,比如“Lennon John”而不是“John Lennon”。
我确实查看了fuzzyjoin
文档,但找不到编写此伪代码的工作版本的方法:
merge - 没有 proc SQL 的模糊连接
再会,
我希望将两个日期合并到下一个最接近的日期。
数据集从 500Mb 到 1G 都是巨大的,所以这proc sql
是不可能的。
我有两个数据集。第一个(舰队)有观察结果,第二个有日期和用于进一步处理的代号。像这样:
我想要的是这样的链接表:
与逻辑
Date < CreatedPortalDate and (CreatedPortalDate - date) = min(CreatedPortalDate - date)
我想出的有点笨拙,我正在寻找一种有效/更好的方法来实现这一点。
- 任何想法如何改进或解决这个问题?
- 无知的想法:我可以创建
distance
将存储的哈希表。 - 数组可能吗?不知何故。
编辑:
- 通用格式
- 完毕
- 十亿行从何而来?
- 是的,还涉及其他数据,但日期是唯一的链接变量。
- 排序?
- 是的,数据已排序,可以再次排序。
- gen num 日期总是相隔 7 天吗?
- 不,这是棘手的部分。否则我可以使用
week
和year
(或其他分箱)作为唯一标识符。
- 不,这是棘手的部分。否则我可以使用
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 参数,但无济于事。任何人都可以阐明这个问题吗?
r - 在 R 中的许多文章中找到相近的词
我有一个 tibble 表(mydf)(100 行 x 5 列)。文章由许多段落组成。
我想向表中添加新列,如果FirstWord之间的距离接近Article 中的SecondWord 30 个字空间,这给了我TRUE/FALSE 。
我已经按照 StackOverflow 中的这个示例来计算距离 -如何计算单词与文档中特定术语的接近度
我得到这样的表:
如何获得这种格式的结果:
感谢你的帮助 :)
r - R - 将(周期)长格式时间序列转换为宽格式小时时间序列
如果没有值,我想将以下数据框转换为宽格式的每小时时间序列,填充为零。本质上,我想将带有 start/endperiod 的数据帧转换为每小时的时间序列:
输出:
最后两个条目不是我的错误,但有时数据包含具有相同值的双重条目,但我认为使用“唯一”我应该能够将它们过滤掉。
更多数据信息:
我需要采用宽格式样式的数据,而不是让 EventStart/EventStop 期间的每小时索引具有相同的每小时值,并且如果它不包含零作为值。
要将其转换为宽格式:
格式很好,但不是 EventStart/EventStop,我需要一个每小时连续的时间序列,零作为“填充”。
我能够以我想要的格式创建一个空数据框:
目标输出表应该是这样的:
数据来自的 csv 文件大约 8-9 兆字节,for 循环花费的时间太长。有人建议使用“match_fun”参数进行模糊连接和模糊连接,还有一个检查索引是否在区间内的函数,不幸的是我有点迷路了。
非常感谢!
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”中的错误:操作仅适用于数字、逻辑或复杂类型”。有谁知道这种匹配是否可能?提前致谢!
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)
这里表达条件,比如给: