Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用dplyr过滤精确匹配字符串_R - Fatal编程技术网

如何使用dplyr过滤精确匹配字符串

如何使用dplyr过滤精确匹配字符串,r,R,我有datatable datatmp datatmp Code Desc Z00.1 Description1 Z00 Description2 Z38 Description3 Z38.0 Description4 Z38.1 Description5 尝试使用以下方法仅过滤Z38代码 datatmp %>% dplyr::filter(str_detect(Code

我有datatable 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


请建议仅查找精确匹配项

您的grepl过滤器非常接近。将代码更改为:

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

^符号表示字符串的开头(在本例中技术上不需要,$符号表示字符串的结尾,因此Z38.0将不匹配。

如何:
datatmp%>%dplyr::filter(code='Z38')
如果您只需要“Z38”:
datatmp%>%filter(code='Z38')
如果要基于多个值进行筛选:
datatmp%>%filter(代码%c(“Z38”,“Z00”))
要动态框显的筛选条件您的意思是
cond%filter(代码==cond)
?是,所选的cond请参考此url获取详细信息[链接]()