【问题标题】:R filter a dataframe based on fuzzy match with list [duplicate]R基于与列表的模糊匹配过滤数据帧[重复]
【发布时间】:2019-11-18 12:03:13
【问题描述】:

给定数据框:

df = data.frame(
    el = c('one1', 'one2', 'two', 'three', 'four1', 'four2' )
)

如何根据以下列表进行过滤

keeps = c('one', 'two', 'four')

这样的行

'one1', 'one2', 'two', 'four1', 'four2'

将被退回。

基本上我希望能够根据列表索引数据框,但是 使用模糊匹配而不是精确匹配。

【问题讨论】:

    标签: r list dataframe match


    【解决方案1】:

    很多选择。我最喜欢的是来自dplyr 的过滤器以及 grepl

    df %>% 
      filter(.,grepl('one|two|four',el)) #Matches anything containing one,two,or four
    
         el
    1  one1
    2  one2
    3   two
    4 four1
    5 four2
    
    df %>% 
      filter(.,grepl('one|two',el))
    
        el
    1 one1
    2 one2
    3  two
    

    【讨论】:

      【解决方案2】:

      也许你可以使用

       with(df,subset(df,grepl(paste0(keeps,collapse = "|"),el)))
      

      给了

           el
      1  one1
      2  one2
      3   two
      5 four1
      6 four2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-25
        • 2011-08-28
        • 2011-08-27
        • 2022-01-20
        相关资源
        最近更新 更多