我在数据框中有一列,其中每行包含一串名称,这些名称由逗号,
分隔,如下所示
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 Monroe
或Dennis Lee
或Bismark 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
非常感谢任何有关实现这一目标的帮助。
答案 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)
就足够了。