Dplyr을 사용하여 데이터를 그룹화하고 필터링하는 방법


다음 기본 구문을 사용하여 R의 dplyr 패키지를 사용하여 데이터를 그룹화하고 필터링할 수 있습니다.

 df %>%
  group_by(team) %>%
  filter(any(points = = 10 ))

이 특정 구문은 이라는 열별로 데이터 프레임을 그룹화하고 포인트 열의 값 중 하나 이상이 10인 그룹만 필터링합니다.

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

예: dplyr을 사용하여 데이터 그룹화 및 필터링

다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 15, 8, 4, 10, 10, 12, 12, 7))

#view data frame
df

  team points
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10
7 C 12
8 C 12
9 C 7

다음 코드를 사용하여 열의 값을 기준으로 데이터 프레임을 그룹화한 다음 포인트 열에 10과 같은 값이 하나도 없는 모든 그룹을 필터링할 수 있습니다.

 library (dplyr)

#group by team and filter out teams where no points value is equal to 10
df %>%
  group_by(team) %>%
  filter(any(points == 10 ))

# A tibble: 6 x 2
# Groups: team [2]
  team points
    
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10

“C”의 점수 열에 10인 값이 없기 때문에 팀이 “C”인 모든 행이 필터링됩니다.

이는 적용할 수 있는 필터의 예일 뿐입니다.

예를 들어 포인트 열에 13보다 큰 값이 하나 이상 있는 팀을 필터링하는 또 다른 필터를 적용할 수 있습니다.

 library (dplyr)

#group by team and filter out teams where no points value is greater than 13
df %>%
  group_by(team) %>%
  filter(any(points > 13 ))

# A tibble: 3 x 2
# Groups: team [1]
  team points
    
1 to 10
2 to 15
3 to 8

팀이 “A”와 같은 줄만 유지됩니다. 왜냐하면 이 팀은 13보다 큰 포인트 값이 하나 이상 있는 유일한 팀이기 때문입니다.

참고 : 여기 에서 dplyr의 필터 기능에 대한 전체 문서를 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 dplyr에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

dplyr을 사용하여 그룹별로 첫 번째 행을 선택하는 방법
dplyr을 사용하여 여러 조건으로 필터링하는 방법
dplyr을 사용하여 특정 문자열이 포함된 행을 필터링하는 방법

의견을 추가하다

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