【问题标题】:dplyr filter if a column starts with one of the strings in a list如果列以列表中的一个字符串开头,则 dplyr 过滤
【发布时间】:2018-10-17 05:47:28
【问题描述】:

我们的目标:使用 R dplyr,如果 match_column 字段中的数据以 code_list

以下适用于静态字符串(即,它返回 dataset::match_column 中以静态字符串“123”开头的所有行。)

dataset1 <-filter(dataset, str_detect(match_column,"^123"))

经过多次尝试,我们无法弄清楚将“^123”替换为 code_list 的语法。

任何帮助将不胜感激。

【问题讨论】:

    标签: r filter dplyr


    【解决方案1】:

    我们可以pastecollapse 的字符串来做filter 来过滤数据集列('match_column')中包含'code_list' 中任一元素的行

    library(tidyverse)
    pat <-  paste0("^(", paste(code_list, collapse = "|"), ")")
    dataset %>%
         filter(str_detect(match_column, pat))
    

    如果只是使用 'code_list' 中的元素之一

    dataset %>%
         filter(str_detect(match_column, paste0("^", code_list[1])))
    

    【讨论】:

    • 感谢 akrun,您的解决方案正是我们所需要的。一旦我们在“|”之后添加了一个“^” (... collapse = "|^" ...) 过滤器似乎工作得很好。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2023-01-19
    相关资源
    最近更新 更多