본문 바로가기
R Programming/dplyr 패키지

filter( ) 함수: 케이스(행) 추출

by 블루드래곤 2021. 2. 25.
728x90

실제 데이터를 분석할 때 일반적으로 데이터 전체를 사용하여 분석하기도 하지만 분석 목적에 따라 데이터의 일부를 추출해 분석하기도 한다. filter( ) 함수는 주어진 조건에 따라 데이터의 일부 케이스(행)를 추출할 때 많이 사용한다. 아래 그림의 예시와 같이 여러 케이스(행)에서 특정 조건(오렌지색)에 케이스(행)를 추출할 때 유용하게 적용할 수 있다. 아래 구체적인 예시를 통해 특정 조건을 설정하는 여러 방법에 대해 설명하고자 한다. 

 

filter( ) 함수 사용 예시

Source: https://llearn.r-journalism.com/en/wrangling/dplyr/dplyr/ 

 

본 포스팅에서는 분석할 때 편리를 위해 R에서 기본적으로 제공하는 airquality 데이터 세트를 사용한다.

> airquality <- datasets::airquality
> head(airquality)

  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

 

Case 1: 단일 조건(1개 변수)

  • 예시: Ozone 값이 100보다 크거나 같은 경우(연결 연산자 %>%: 단축키 Ctrl + Shift + M)
> airquality %>% filter(Ozone >= 100)

  Ozone Solar.R Wind Temp Month Day
1   115     223  5.7   79     5  30
2   135     269  4.1   84     7   1
3   108     223  8.0   85     7  25
4   122     255  4.0   89     8   7
5   110     207  8.0   90     8   9
6   168     238  3.4   81     8  25
7   118     225  2.3   94     8  29

 

Case 2: 단일 조건(2개 이상 변수)

  • 예시1: Ozone 값이 100보다 크거나 같으면서 Month가 8인 경우
> airquality %>% filter(Ozone >= 100 & Month == 8 )

  Ozone Solar.R Wind Temp Month Day
1   122     255  4.0   89     8   7
2   110     207  8.0   90     8   9
3   168     238  3.4   81     8  25
4   118     225  2.3   94     8  29

 

  • 예시2: Ozone 값이 100보다 크거나 Solar.R 값이 320보다 큰 경우
> airquality %>% filter(Ozone >= 100 | Solar.R >= 320)

   Ozone Solar.R Wind Temp Month Day
1     14     334 11.5   64     5  16
2     30     322 11.5   68     5  19
3     11     320 16.6   73     5  22
4    115     223  5.7   79     5  30
5     39     323 11.5   87     6  10
6     NA     332 13.8   80     6  14
7     NA     322 11.5   79     6  15
8    135     269  4.1   84     7   1
9    108     223  8.0   85     7  25
10   122     255  4.0   89     8   7
11   110     207  8.0   90     8   9
12   168     238  3.4   81     8  25
13   118     225  2.3   94     8  29

 

Case 3: 특정 조건

  • 예시: 리 연산자 외에 아래와 같이 결측값, 특정값 등을 포함하는 조건을 넣을 경우
  • is.na(): 결측값 포함
  • !is.na(): 결측값 제외
  • %in%: 특정값 포함
## Solar.R 변수에 결측값을 포함하는 케이스를 모두 출력
> airquality %>% filter(is.na(Solar.R))

  Ozone Solar.R Wind Temp Month Day
1    NA      NA 14.3   56     5   5
2    28      NA 14.9   66     5   6
3     7      NA  6.9   74     5  11
4    NA      NA  8.0   57     5  27
5    78      NA  6.9   86     8   4
6    35      NA  7.4   85     8   5
7    66      NA  4.6   87     8   6

## Day 변수에 5를 포함하는 케이스를 모두 출력
> airquality %>% filter(Day %in% 5)

  Ozone Solar.R Wind Temp Month Day
1    NA      NA 14.3   56     5   5
2    NA     220  8.6   85     6   5
3    64     175  4.6   83     7   5
4    35      NA  7.4   85     8   5
5    47      95  7.4   87     9   5

댓글