728x90
실제 데이터를 분석할 때 일반적으로 데이터 전체를 사용하여 분석하기도 하지만 분석 목적에 따라 데이터의 일부를 추출해 분석하기도 한다. 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
'R Programming > dplyr 패키지' 카테고리의 다른 글
group_by( ) 와 summarise( ) 함수: 그룹별 요약 (0) | 2022.08.11 |
---|---|
mutate( ) 함수: 파생변수 추가 (0) | 2022.08.09 |
arrange( ) 함수: 케이스(행) 정렬 (0) | 2022.08.09 |
select( ) 함수: 변수 추출 (0) | 2022.08.08 |
dplyr 패키지 개요 및 설치 (0) | 2021.02.23 |
댓글