【问题标题】:r string match exact words [duplicate]r字符串匹配确切的单词[重复]
【发布时间】:2016-05-01 18:05:16
【问题描述】:

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

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,如果两者都没有找到这些名称中的一个,则第二列中的值应为 No。最终的输出应该如下。

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

非常感谢您对完成此操作的任何帮助。

【问题讨论】:

    标签: r string


    【解决方案1】:

    这应该适用于数据框 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)
    

    足够了。

    【讨论】:

    • 哇,我在为自己的愚蠢摇头感谢 lmo
    • 可能只需要grepl("(Missy Monroe|Dennis Lee|Bismark Bison)", df$Col1) 就足以得到一个逻辑向量,这在以后更容易使用。
    • 我同意你的观点,但不清楚 OP 以后想对数据做什么。也许结果会被写入 csv,在电子表格中进行一些格式化,然后打印出来贴在墙上。
    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多