如何使用dplyr过滤完全匹配字符串

时间:2017-02-01 10:46:20

标签: r

我有数据表datatmp

    datatmp
        Code         Desc
       Z00.1 Description1
         Z00 Description2
         Z38 Description3
       Z38.0 Description4
       Z38.1 Description5

尝试使用

仅过滤Z38代码
datatmp %>% dplyr::filter(str_detect(Code,'Z38'))

但是得到以下结果,包括Z38.0和Z38.1

   Code         Desc
    Z38 Description3
  Z38.0 Description4
  Z38.1 Description5

还尝试使用datatmp %>% dplyr::filter(grepl('Z38',Code,fixed = TRUE))提供示例输出。

注意:上面的例子我在过滤条件中只提到了一个值,即Z38,实际上这些值是动态的。例Z38,Z00

请建议仅查找完全匹配。

1 个答案:

答案 0 :(得分:1)

您已经接近使用grepl过滤器了。将代码更改为:

datatmp %>% dplyr::filter(grepl("^Z38$", Code))

^符号表示字符串的开头(在这种情况下,技术上没有必要),而$符号表示字符串的结尾,因此Z38.0将不匹配。