Dplyr에서 조건부 필터를 사용하는 방법
R의 dplyr 패키지에 있는 함수를 사용하여 데이터 프레임에 조건부 필터를 적용하려면 다음 기본 구문을 사용할 수 있습니다.
library (dplyr) #filter data frame where points is greater than some value (based on team) df %>% filter(case_when(team==' A ' ~ points > 15, team==' B ' ~ points > 20, TRUE ~ points > 30))
이 특정 예는 포인트 열의 값이 팀 열의 값에 따라 특정 값보다 큰 데이터 프레임의 행을 필터링합니다.
관련 항목: dplyr의 case_when() 소개
다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.
예: dplyr에서 조건부 필터를 사용하는 방법
다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'), points=c(10, 12, 17, 18, 24, 29, 29, 34, 35)) #view data frame df team points 1 to 10 2 to 12 3 to 17 4 B 18 5 B 24 6 B 29 7 C 29 8 C 34 9 C 35
이제 다음 조건부 필터를 적용한다고 가정합니다.
- 포인트가 15점 이상인 A 팀 선수들만 라인을 유지하세요 .
- 포인트가 20점보다 큰 B 팀 선수에 대해서만 라인을 유지하세요 .
- 포인트가 30점을 넘는 Team C 선수에 대해서만 라인을 유지하세요 .
dplyr 패키지의 filter() 및 case_when() 함수를 사용하여 데이터 프레임에 이 조건부 필터를 적용할 수 있습니다.
library (dplyr) #filter data frame where points is greater than some value (based on team) df %>% filter(case_when(team==' A ' ~ points > 15, team==' B ' ~ points > 20, TRUE ~ points > 30)) team points 1 to 17 2 B 24 3 B 29 4 C 34 5 C 35
이제 데이터 프레임의 행은 팀 열의 값에 따라 포인트 열의 값이 특정 값보다 큰 경우 필터링됩니다.
참고 #1 : case_when() 함수에서는 마지막 인수에 TRUE를 사용하여 “A” 또는 “B”와 같지 않은 팀 열의 모든 값을 나타냅니다.
참고 #2 : 여기에서 dplyr case_when() 함수에 대한 전체 문서를 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 dplyr에서 다른 일반적인 기능을 수행하는 방법을 설명합니다.
dplyr을 사용하여 행 번호로 필터링하는 방법
dplyr을 사용하여 여러 조건으로 필터링하는 방법
dplyr에서 “포함되지 않음” 필터를 사용하는 방법