본문 바로가기
R tidyverse/하루만에 끝내는 dplyr

[R dplyr의 이해] 5. 조건을 만족하는 행 추출 (filter)

by 만다린망고 2023. 2. 7.
반응형

tidyverse의 dplyr(디플라이알)에서 제공하는 filter 함수는 특정 조건을 만족하는 행만 추출하는 함수입니다. 

내장데이터인 mpg를 이용해서 실습해봅시다. mpg 는 자동차 데이터입니다. 

> mpg
# A tibble: 234 × 11
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class  
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 p     compact
 8 audi         a4 quattro   1.8  1999     4 manual(m5) 4        18    26 p     compact
 9 audi         a4 quattro   1.8  1999     4 auto(l5)   4        16    25 p     compact
10 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact

 

1. 특정 조건을 만족하는 행 추출

생산 연도가 2000 이후인 행만 추출하는 방법은 아래와 같습니다. 

filter(mpg, year > 2000)


논리연산자인 and 나 or 등을 이용하여 조건을 적용하는 것도 가능합니다. 생산연도가 2000년 이후이고, 실린더 수가 5개 이상인 행만 추출해봅시다. 

filter(mpg, year > 2000 & cyl >=5)

 

2. %in% 연산자 사용

%in% 연산자를 사용하면 filter 함수 사용이 더 편해집니다. 예를 들어 차종이 corvette, malibu, mustang 인 행만 추출하고 싶다고 한다면 아래와 같이 논리연산자를 사용해야 합니다. 

filter(mpg, model=='corvette' | model=='malibu' | model=='mustang')


이런 경우 %in% 연산자를 아래와 같이 사용할 수 있습니다. 

filter(mpg, model %in% c('corvette','malibu','mustang'))
반응형

댓글