问题标签 [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 - 使用 POSIXct 和 POSIXt 进行模糊连接
大家好,所以我有两个数据框,我想根据日期和时间加入它们。如果from是 inside和from ,它应该是一个fuzzy_join
这样的连接工作。我试过了DATE
test2
pickup_datetime
dropoff_datetime
test1
但这会返回:Error: All columns in a tibble must be vectors. Column "col" is NULL.
更新:我找到了解决方案
感谢大家!
r - 模糊连接错误:小标题中的所有列都必须是向量
嘿伙计们,所以我试图模糊加入纬度和经度信息以获取特定位置的邮政编码。我试过了:
但不幸的是,这会返回错误消息Error: All columns in a tibble must be vectors. x Column "col" is NULL.
,我不知道如何解决。在任一数据框中都没有列“col”。dropoff_longitute
如果介于bounds_east
和之间bounds_west
,结果应该给我对应的邮政编码。提前非常感谢!dropoff_latitude
bounds_north
bounds_south
r - 如何加入位置数据(纬度,经度)
我必须数据集,一个包含某个位置(纬度,经度),即测试,另一个包含纽约市所有邮政编码的纬度/经度信息,即 test2。
我现在正在尝试加入这两个数据集,以便最终trip_count
得到一个borough
。到目前为止,我difference_left_join
是这样使用的:
尽管这种方法有效,但随着数据集变大,这种连接会产生很多多重匹配,因此我最终得到的数据集有时是初始数据集的十倍test
。有没有人有不同的方法来解决这个问题而不创建多个匹配?或者有什么办法可以强制连接总是只为每一行使用一个匹配项test
?我将不胜感激!
编辑:解决这个问题R dplyr left join - 多个返回值和新行:如何只要求第一个匹配项?也会解决我的。所以也许你们中的一个人对此有一个想法!
r - Limiting the amount of fuzzy string comparisons by comparing by subgroup
I have two datasets as follows:
I am trying to match them as follows, suggested in this link, by Arthur Yip.
The issue is that the code completely fries my computer, so I would like to split up the code into groups to limit the amount of string comparisons. I tried:
But both give me the following respective errors:
And:
What would be the proper way to do this?
r - 大写字母(大小写)不匹配(stringdist)的 Fuzzyjoin / stringdist_join 权重
与 R 一起工作,我正在寻找在string_dist_left_join()
这是一个可重现的示例:
上面是在几个 tibbles 上重现fuzzyjoin 驱动的stringsidt_left_join 的代码。输出如下所示:
我想要的是某种方式来衡量大小写,例如,将贝德福德与 B ED福特进行比较:我希望这比贝德福德与贝德福德的匹配更差,但比贝德福德与贝德福特的匹配更好。该选项ignore_case = TRUE
将 BEDford 视为与 Bedford 的完美匹配。
我喜欢fuzzyjoin 包,而且我刚刚发现了可以为每个删除、插入、替换和易位传递给stringdist 的自定义权重。这太棒了;玩的玩具,调整的参数。
我还想做的是调整大小写(大写?)匹配。我可以选择ignore_case = TRUE
在 stringdist_left_join 中,(实际上,权重大小写为 0 或 1),但作为我讨厌的 cur,我想在 0 和 1 之间使用权重。
有谁知道我想念的地方是否有选择?
或者答案是:艰难地去做?我想可能有很长的路要走,涉及比较跑步前后的距离或计算与 比较的tolower()
加权距离,但有谁知道我可以使用更优雅的方法或包来做到这一点?ignore_case = TRUE
ignore_case = FALSE
谢谢
r - 将两个数据帧分组并使用 stringdist_join 循环
我想使用 stringdist_join 按十年对美国县进行模糊匹配。由于县名会随着时间而变化,我想在每十年匹配正确的县名。
如果我写:
然后 stringdist_join 也会对十年进行模糊匹配,例如匹配 1960 到 1970 年,而实际上我想将十年变量视为正确并且仅模糊匹配县。
我可以看到我需要按十年对拼写错误和正确的数据帧进行分组,然后分别在每个数据帧上运行,但我不知道该怎么做。Tidyverse 解决方案将是首选。
谢谢!
r - 有没有办法在 R 中为字符串匹配设置“规则”?
我一直在摸索,试图找到一种方法来解决这个问题,而不必进入 NLP 并开始训练模型。我有 2 个相当大的数据集,应该可以按名称进行匹配,但它们的拼写和语法略有不同,很容易让人理解,但又足够复杂,以至于我的模糊匹配和 levenshtein 编辑距离不能。数据集中有大量重复项,但我无法手动映射它们就足够了,所以我试图围绕要匹配的内容创建“规则”。像 FuzzyWuzzy 这样的包是否允许更多定制元素来解决这个问题?下面的例子,谢谢!
到目前为止,我在匹配数据集方面得到的最接近的是模糊字符串匹配,但这只能很好地工作,并且随着我增加最大编辑距离,仍然会遗漏一大块或产生相当多的错误。
数据集比这更深入。我希望制定某种“规则”,即“纽约市”始终等于“纽约市”,但我不确定是否有更聪明的方法来解决这个问题。我希望这个特定的文本示例有所帮助。非常感谢!
r - 使用 stringdist_left_join 通过多列连接,但并非所有列都模糊
我有一个 130 万行的出版物数据集,对于每条记录,我想从具有 860 万行的第二个数据集中检索一个 paper_id。这个想法是使用两个表中的多个列在 dataset2 中查找 dataset1 的匹配项,如此功能性但简化的脚本所示:
我这里有两个问题。首先是只有“标题”具有需要模糊匹配的变体(拼写错误、缩写、特殊字符等),但代码接受所有三个使用字段的变体。这会增加可能匹配错误的数量,因为类似的标题出现在不同的年份和出版物中。
我认为可以解决第一个问题的解决方案是:
这将解决第一个问题,但还有第二个问题:脚本在样本数据上运行正常,但是当我尝试将它用于整个数据集时,它会给出错误“向量内存已用尽(达到限制?)”。
所以,我的问题是:
是否可以确定哪些列应该是相同的,哪些应该是模糊的,这可能会使脚本更轻?
是否有可能根据相同的变量对两个数据集进行子集化,然后在子集中的标题上运行模糊匹配,将所有内容合并回来?(我不确定这是否可行,因为我将拥有 18 万个子集:六年的 3 万份出版物)。
任何帮助表示赞赏。
最好的
r - 如何使用 IRange 一次性模糊连接多个数据帧
我需要加入几个基于不精确匹配的数据帧,这可以使用fuzzyjoin
和IRanges
包来实现:
数据:
在这里,我想根据和之间的间隔df2
加入和。我能做的就是分步进行,即通过加入加入:df3
df1
start
end
结果:
这一切都很好,但在我的实际数据中,我有多个数据框要加入,然后,逐个加入是不切实际且容易出错的。如何一次性对所有数据帧执行连接?
r - `interval_left_join` 多个数据帧的函数
我有几个我想要的数据框interval_left_join
。理论上我可以逐步加入数据帧,但更喜欢一个函数来一次执行连接:
数据:
我想df1
根据它们start
的end
间隔汇集到的变量是v2
, v3
, v4
. 到目前为止我尝试过的是下面的代码:它输出了partyl不正确的数据并且完全v2
失败了——这里有什么遗漏或错误?v3
v4
期望的结果是这样的: