r字符串匹配确切的单词

时间:2016-05-01 18:05:16

标签: r string

我在数据框中有一列,其中每行包含一串名称,这些名称由逗号,分隔,如下所示

Col1
----------------------------------------------------
Missy Monroe, Andy Dalton P, Deny Grove, Easton West
Susan Schmidt, Bella Blu, Dennis Lee H, Georges Madison
Maya Unger, Kal Rapinsky, Richard Izzo, Rob Kolfax
Bismark Bison, Twyla Yellow Bird  Bell, Yost Jefferson

我在此列中搜索三个名称,Missy MonroeDennis LeeBismark Bison如果找到这些名称中的任何一个,那么值Yes应该是在第二列中估算,如果找不到这些名称,则第二列中的值应为“否”。最终输出应如下所示。

Col1                                                           Results
----------------------------------------------------------------------
Missy Monroe, Andy Dalton P, Deny Grove, Easton West           Yes
Susan Schmidt, Bella Blu, Dennis Lee H, Georges Madison        Yes
Maya Unger, Kal Rapinsky, Richard Izzo, Rob Kolfax             No
Bismark Bison, Twyla Yellow Bird  Bell, Yost Jefferson         Yes

非常感谢任何有关实现这一目标的帮助。

1 个答案:

答案 0 :(得分:4)

这适用于数据框df:

df$Results <- ifelse(grepl("(Missy Monroe|Dennis Lee|Bismark Bison)",
                           df$Col1), "Yes", "No")

grepl函数返回TRUE或FALSE,这是ifelse的完美输入。

正如@ david-arenburg所指出的,如果您打算使用此列进行其他数据分析,那么将其构建为逻辑向量而不是字符串向量可能是更好的主意。在这种情况下,

df$Results <- grepl("(Missy Monroe|Dennis Lee|Bismark Bison)", df$Col1)

就足够了。