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에서 “포함되지 않음” 필터를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다