【问题标题】:How to subset data with multiple criteria from one column如何从一列中对具有多个条件的数据进行子集化
【发布时间】:2019-04-21 13:56:58
【问题描述】:

我需要从我的 df 的列 (V5:Format) 中的多个“包含”标准创建一个数据子集。

我试过了:

new.data <- old.data[grep("text1", old.data$V5), ]

这适用于 1 个纳入标准。我想添加第二个包含标准 - 数据子集的数据必须包含“text1”和“text2”

提前致谢。

【问题讨论】:

  • 为了更容易阅读/理解 edit 您的问题,以便使用编辑器 {} 按钮或手动缩进 4 个空格来正确格式化输入、输出和代码。您的标签中提到的 UNIX 工具 grep 没有名为 subset() 的函数或任何其他函数,所以如果这真的是关于某个函数,恰好在其他工具中也被命名为 grep,那么请添加标记任何工具,并删除 UNIX 的 grep 标记。
  • 感谢 Ed - 对这个科学领域(+社区)非常陌生,并感谢有关使我的请求更简洁的指导。我已经(大量)修改了我原来的问题以包括要点。我希望 grep 能让我到达那里!
  • grep 作为标记是用于执行g/re/p 的命令行 UNIX 工具。您发布的代码或问题的文本没有让我认为您正在使用 UNIX 工具grep,因此您不应该使用该工具的标签。您似乎正在使用具有名为grep() 的功能的其他工具 - 我的意思是,如果是这种情况,请将您问题上的 UNIX 工具 grep 的标签替换为您所使用的任何工具的标签而是使用,以便您可以从知道任何工具的人那里获得帮助。
  • 欢迎来到 SO。请edit您的问题并提供minimal reproducible example。这应该包括一个示例数据集和您的预期结果。理想情况下,样本数据集可用作测试用例,以证明建议的解决方案按预期工作。谢谢。

标签: r subset


【解决方案1】:

您可以使用grepl() 而不是grep() 来获得一个布尔向量,它告诉您哪些字符串包含该模式。在这些向量上,您可以使用 &amp; 之类的逻辑条件:

new.data <- old.data[grepl("text1", old.data$V5)&grepl("text2", old.data$V5), ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2011-03-04
    • 1970-01-01
    • 2018-05-08
    • 2022-06-18
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多