问题标签 [grepl]

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 投票
3 回答
360 浏览

regex - 用 grepl 替换解析的正则表达式

目标是解析正则表达式并替换匹配的模式。

考虑这个例子:

我必须找到所有出现的cat和一个数字[0-9]。去做这个:

下一步是将 的每个元素替换为foundstring cat。根据堆栈问题 20219311 ,我尝试了包 (gsubfn) 中的gsubsubgsubfn() :

这不是预期的结果:

我想我错过了一点。我会很感激我能得到的任何帮助。谢谢。

0 投票
1 回答
40 浏览

regex - 仅替换已解析的正则表达式

这个问题类似于 Stack question Regular expression parsed with grepl replacement

目标是解析正则表达式并仅替换匹配的模式。这个例子:

要解析感兴趣的匹配项cat

理想的结果会替换所有出现的catwith chicken

知道如何实现这一目标吗?多谢你们。

0 投票
2 回答
4434 浏览

r - 在 R 中,为每一行找到包含字符串的列

我一定是在考虑错误的搜索词,因为我不敢相信我的问题是独一无二的,但我只找到了一个类似的问题。

我有一些来自世界银行的相当笨重的数据,它是一个代表数据库的平面文件。数据是每行一个项目,但每个项目都有多个特征,这些特征方便地在名称为“SECTOR.1”的列中,在其他名称为“SECTOR.1.PCT”等的列中具有自己的特征。

从中,我试图提取与特定类型的 SECTOR 相关的数据,但我仍然需要拥有所有其他项目信息。

我已经能够朝着正确的方向迈出一些步骤,从我在 SO 上找到的另一个问题:Find the index of the column in data frame that contains the string as value

根据上面的问题说明,一个最小的可重现示例在这里:

我想要的输出是这样的:

我知道我可以做一个 ifelse,但这似乎不是一个非常优雅的方法。当然,因为这是我只会做 1 次的事情(对于这个项目),错别字的风险很小。例如,

我认为如果我有某种可以逐行查看列的应用函数会更好。上一个问题中的方法不适用于这个问题,因为我需要知道哪一列有“c”。除了列出带有“c”的列名之外,我得到了一些没有意义的东西。我不明白 1,3,4 因为它不对应于行名或计数:

而且,如果我尝试按行执行,我确实看到每一行都有一个“c”,正如预期的那样。

ALSO -> 我想知道是否有一种方法可以解决这个问题,如果一行中有多个列中有“c”,例如,如果我们有:

然后我的 ifelse 方法失败了,因为它只为 row5 提供了“col1”。

0 投票
2 回答
106 浏览

r - 识别满足两个条件的唯一观测值,然后删除 R

我有一个 df 如下:

我想做两件事。首先,计算同时具有苹果和橙子的独特观察的数量(即 2 玛丽和约翰)。

然后在那之后,我想从我的数据框中删除它们,这样我就只剩下只有苹果的独特个人了。

这是我尝试过的

真的,我想使用 grepl 因为我的真实数据比水果复杂一点。这是我尝试过的(首先转换为data.table)

所以,总而言之,我的问题在于识别同时拥有苹果和橙子的人。这看起来很简单,所以请随时将我引导到可以教我这个的资源!

期望的输出

0 投票
2 回答
41 浏览

r - 使用模式列表对新字段进行编码

我想使用表达式列表来编码一个新字段。

在我的数据框中,Bisaccategory1 包含对图书类别的完整描述。表示该字段中部分值的特定字符串可用于定义称为“流派”的新字段。一种特殊的类型是“非小说”,它映射到 25 个独特的完整描述。我可以通过指定其中包含的某些模式来识别这些完整描述:

然后我可以匹配这些字符串以完成 Biscategory1 值,如下所示:

但我不清楚如何使用这些“匹配”将值“非小说”分配给我的新类型字段。

这是样本数据:

我知道我可以做类似的事情:

但我有数百个类别,这并不是真正可扩展的。我会很感激任何建议。

0 投票
0 回答
584 浏览

r - 过滤行,R中的因素

使用 dplyr 过滤包含某个字符串的行

嗨,大家好,

V2是一列,因子分类。

我正在尝试过滤以下内容,但我得到 0 个值:

奇怪的是,这有效:

但我特别想要而MSFT不是MSFTXXX等等MSFT

谢谢 :)

0 投票
1 回答
491 浏览

r - R:将列表中的每个字符串与另一个列表匹配,同时返回相邻值

这是我可以在 Excel 中轻松完成的事情。但我被 R 弄糊涂了。

我想将国家名称分配给一长串字符串(“隶属关系”)。

在每个字符串中可能是也可能不是引用位置的子字符串,该位置本身可能引用国家/地区。预期的输出是一个数据帧,如下所示:

“matchedCountry”旨在根据多个列表(大学、英国城市、美国各州等)进行评估,并且允许使用 NA。有些列表只返回 ISO 代码。

根据迄今为止的反馈(感谢@rbm),我已经管理了一个很好的解决方案(见答案部分)。也就是说,我确信性能仍然可以提高。谢谢。

参考:

  1. 同时合并列表中的多个data.frames
  2. R grepl:快速将多个字符串与多个子字符串进行匹配,返回所有匹配项
  3. R grep:将一个字符串与多个模式匹配
  4. 对 R 数据框进行快速测试以查看一列中的行值是否在数据框中的另一列内
  5. 使用列表中包含的一些但不是所有字符串中的多个模式提取和组合多个子字符串并返回到 R 中的列表
  6. 如何从R中的字符串中的多个列表中检测子字符串
0 投票
2 回答
59 浏览

r - 从 2 个变量中解析正则表达式 grep

目的是折叠/重新分配级别作为清理数据集的一部分。

这是示例:

兴趣水平是cat; 这些是条目:

从那里开始,我们的想法是在 中搜索一个属性V2nice在该属性上,该级别cat将被重命名为nice cat。此搜索找到 2 个感兴趣的条目V2

理想的最终结果将df转变为:

任何想法如何实现这一目标?非常感谢。

0 投票
1 回答
462 浏览

r - grepl 并粘贴以获取字符向量,其中元素以逗号分隔

我正在尝试将year.f1990我生成的一些时间虚拟对象(例如)包含到一个命令(eba来自 ExtremeBounds 包)中,该命令接受形式为 `c("variable1","variable2","variable3") 的向量,因此字符串由逗号。我无法为我的时间假人生成这样的向量。拿:

所以我想要和元素一模一样c("year.f1","year.f2")

我设法得到了c("year.f1,year.f2")c("year.f1" "year.f2")两个命令:

但这些都不是我所需要的。第一个错过了单个元素周围的引号,第二个错过了逗号。我想用逗号分隔,每个元素都用“...”框起来。任何帮助,将不胜感激!

ps:来自以下评论:

这个:

应该像这样工作:

0 投票
3 回答
1729 浏览

regex - 部分字符串匹配与新列中的匹配正则表达式 - R

我试图用一串正则表达式部分匹配数据集中列的内容。然后,我想匹配在新列中返回特定匹配正则表达式的行。我的实际数据集很大(130 万行),包含 300 个正则表达式,因此找到一种自动执行此操作的方法很重要,因此添加新的正则表达式不需要代码调整。

展示:

在这种情况下,如果一个正则表达式是“ly”,我希望在匹配行(部分,完全)中有一个带有“ly”的列,而在其他行中有一些“不匹配”的术语。我已经成功地使用 grepl (不基于精确匹配的子集)成功地对数据进行了子集化,这非常有效,但这是我真的在努力的下一步!

我在尝试这个方面取得了一些进展,主要是基于我已经适应的这个代码建议(部分字符串匹配 R ):

正如你所看到的,这会在匹配的行旁边返回一个“1”——到达那里但我已经没有想法了!我想知道是否有人可以提供任何指示?

谢谢!