2017-11-01 11 views
0

열이 특정 관측과 같은 곳에서 dplyr의 필터를 수행하려고합니다.Dplyr 여러 조건의 필터

database %>% dplyr::filter(SOURCE %like% c('%ALPHA%', '%BETA%', '%GAMMA%')) 

감사

답변

5

당신은 어떤이있는 경우 일치, ALPHA|BETA|GAMMAgrepl을 사용할 수 있습니다 : 나는 어떤 결과를 반환하지 않는 다음을 사용하려고

Test <- sqldf("select * from database 
      Where SOURCE LIKE '%ALPHA%' 
      OR SOURCE LIKE '%BETA%' 
      OR SOURCE LIKE '%GAMMA%'") 

로 sqldf 사용할 수 있습니다 3 패턴 중 SOURCE 열에 포함되어 있습니다. 당신이 대소 문자를 구분하고 싶다면

database %>% filter(grepl('ALPHA|BETA|GAMMA', SOURCE)) 

, greplignore.case = T를 추가합니다.

2

%like%data.table 패키지입니다.

Warning message: 
In grepl(pattern, vector) : 
    argument 'pattern' has length > 1 and only the first element will be used 

%like% 연산자는 정규 표현식을 사용하여 문자열 일치를 수행하는 grepl 기능, 주변 단지 래퍼입니다 : 당신은 아마이 경고 메시지를보고있다. 따라서 %은 필요하지 않으며 실제로는 문자 백분율 기호를 나타냅니다.

당신은 한 번에 일치 한 패턴을 제공하므로 하나 (Psidom에서 알 수 있듯이) 정규식 'ALPHA|BETA|GAMMA'를 사용하여 결합 또는 세 개의 문으로 테스트를 깰 수

:

database %>% 
    dplyr::filter(
    SOURCE %like% 'ALPHA' | 
     SOURCE %like% 'BETA' | 
     SOURCE %like% 'GAMMA' 
    ) 
+0

이 내 데이터 세트와 함께 완벽하게 작동하고 일치하는 sqldf, 감사합니다! –