问题标签 [agrep]

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 回答
79 浏览

r - 如何不使用 sapply 更改重复名称?

我有一个带有已注册药物名称的文本向量,另一个带有新药物名称的文本向量。我想知道新药是否看起​​来像已经存在的药物。

例如,如果 supercure 是一种可以由公司 1 或公司 2 生产的药物,并且supercure firm1 1000mg已经supercure firm2 500mg注册,那么supercure firm1 500 mg应该与他们两者相关联。

agrep允许在 R 中进行这种匹配,并sapply允许对新列表中的每种药物进行匹配:

正如预期的那样,supercure 得到两个匹配,randomcure 一个匹配和 unknowncure 没有匹配(这是我想要的)。但是,sapply似乎已经更改了名称,因此没有重复的 :supercure firm1 500mg成为supercure firm1 500mg1supercure firm1 500mg2:

这是一个问题,因为它阻止我从新列表中选择匹配的药物:

new[new %in% names(res)]仅捕获 randomcure(因为 supercure 的名称已更改)。

我可以想办法通过相当不优雅的文本处理来解决这个问题,但是有没有更聪明的方法来获取找到匹配项的新药列表?

理想的输出是:

0 投票
1 回答
137 浏览

r - 使用 agrep 返回一个不同的变量

我正在使用 agrep 从一个表到另一个表进行查找,但我想要返回的结果不是匹配的值。它们来自另一列/变量。我当前的 agrep 语法:

所以现在:personalfolders$DOBMatch == c(290, 312)但我想要的是从我正在查找的数据框中的另一个变量返回值:allees2$PartPathmatch1对于每个返回的行。我知道 agrep 的 value=TRUE 变量,但我相信它只会返回查找值本身。

有没有办法我可以使用personalfolders$DOBMatch现在包含类似c(290, 312)创建另一个向量的字段,然后将其添加到带有查找结果的框架中,或者我可以向 agrep 函数添加另一个参数以直接返回allees2$PartpathMatch1匹配的值?

0 投票
1 回答
124 浏览

r - 如何解决 R 中 agrep 函数正则表达式逻辑中的错误?

所以我在 R 中遇到了一个小错误/功能,其中 agrep 函数不接受“|” 当在参数中使用时,字符作为有效的正则表达式逻辑(其他人也有这个问题)。

我正在尝试对一个字符向量 (ListofUniqueNames) 中的 30 个不同、相对唯一的名称与数据框列 (MasterList$Names) 中超过 380,000 个不同名称的列表进行模糊匹配,并获得所有匹配的名称。我能够通过使用 grep 完成精确匹配

但是,由于上面列出的问题,这种方法不适用于 agrep。我怎样才能完成同样的任务但使用模糊匹配?

0 投票
1 回答
105 浏览

r - 通过最佳字符串匹配对数据帧中的字符串变量进行分组以生成子集

我有一个带有国家名称列的数据框。即使它们是同一个国家,这些名字的书写方式也不同,例如,小写字母不同,缺少一些字母,一些额外的字母等等。

所以我需要将它们分组到类似的模式中。例如,我有两个属于同一类别的观察结果: ("Brasil","brazil") 我需要将它们放在一起。我无法手动执行此操作,因为整个数据框由约 10 000 个观察值组成。

在对一个类别进行相似的观察后,我需要从这个类别中制作一些子集。

是否有一种可能的解决方案可以将这些相似的名称分组到一个类别中,然后将该类别与数据框中的其他列组成子集?

我试图使用 agrep 函数但没有成功。

0 投票
1 回答
709 浏览

r - 模糊字符串匹配 agrep()

我将公司名称列表与 R 和 agrep() 进行匹配,因为数据在遗留系统中存储错误 - 没有第 4 范式,公司记录在与客户相同的级别,这意味着新的公司条目每一位新客户,都会为一家公司带来很多不同的公司名称——这在很多情况下都很好用。

有时,特别是对于短字符串,我得到 - 至少对我来说 - 奇怪的匹配,例如(ABC 是第一个公司名称):

我正在使用agrep()以下参数:

除了调整最大距离或更好的方法之外,还有其他方法agrep()吗?

提前致谢

0 投票
1 回答
56 浏览

r - agrep 输出近似运算

我想在数据框中一起输出原始字符串和所有可能的结果,如下所示。

这是可能的还是有更好的功能可以使用?

0 投票
1 回答
907 浏览

r - 在循环中使用 agrepl -- 'pattern' 的长度 > 1 并且只使用第一个元素

我正在尝试浏览艺术家和专辑列表,并将每张专辑的每首歌曲的音频特征放入数据框(使用 spotifyr 包)。但是,在我的列表中,专辑标题有一些拼写错误,所以我尝试使用 agrep 或 agrepl 进行模糊匹配

例如:

get_artist_audio_features()来自 spotifyr的功能会返回艺术家每首歌曲的音频功能,但我只想要某些特定专辑中的歌曲。

当我运行它时,我收到错误:

...argument 'pattern' has length > 1 and only the first element will be used

有任何想法吗?我知道我需要以某种方式循环 agrepl,但我不确定如何在filter()函数中实现它,或者我什至需要filter().

0 投票
1 回答
206 浏览

r - 仅当不存在完全匹配时才进行模糊匹配

我正在尝试编写一个函数来从 Spotify 的 API 获取专辑数据,以获取专辑和艺术家的数据框。因为数据集中有一些拼写错误,我需要使用模糊匹配函数(如agrepl)。

然而,一些艺术家,如 Absu,拥有的专辑按照agrepl's 的标准是相同的。例如,Absu 有一张名为“Absu”的专辑和另一张名为“Abzu”的专辑。我只想要其中 1 个的数据,但我最终会得到两者的数据。我知道您可以更改max.distanceagrepl但我需要将它设置得相当低以解决更多的拼写错误。

是否有预先构建的功能或简单的方法来告诉 R

如果album_namemydata[["Album"]]过滤器完全匹配并继续前进:尝试找到一个接近匹配的过滤器?

这是我尝试过但不起作用的方法:

这就是我的代码在没有尝试任何特殊的情况下的样子

有任何想法吗?谢谢

0 投票
1 回答
167 浏览

r - R中用连字符分隔的数字的模糊字符串匹配

我正在尝试将一张表中包含的手机塔 ID 与手机塔 ID 的位置主表(以纬度为单位)进行匹配。位置表中的 ID 格式与第一个表中的格式不同,我试图用它agrep()来进行模糊匹配。举个例子,假设我要匹配的 ID 是:

位于位置表中的 ID 示例:

然后我使用agrep()不同的组合max.distance

这将返回:

而我真正追求的价值是"125-39883" 我也尝试了包中的stringdist_join()功能stringdist并将其应用于两个不同的数据框max_dist,但没有成功。基本上,我正在寻找的是最后一个连字符之后的完美匹配,然后是倒数第二个连字符上的数字,依此类推。有没有办法做到这一点?

0 投票
0 回答
134 浏览

r - 寻找模糊匹配函数,R 的 agrepl 中可能存在的 bug

我正在尝试构建一个使用 Ragrepl进行近似匹配的函数。我正在使用正则表达式模式,从我的角度来看,它不被视为正则表达式。

我通过在我的 REPL 中运行以下测试得出了这个结论:

我不太擅长使用正则表达式,但我很确定我的所有模式都应该匹配“ha”。

假设我是对的并且不应该发生上述行为,您能否提出另一个功能/解决方案以将我的模式与“ha”相匹配?

更具体地说,我需要一个模糊匹配器来帮助我在非结构化数据中找到关键字。

更新我应该指出,我使用正则表达式的唯一原因是因为我正在寻找关键字(与它们周围的空格匹配)。如果我可以确保“haha”不会匹配“ha”但“ha foo”会匹配,那么这个问题就不需要正则表达式。