본문 바로가기
R

R - dplyr 패키지 (1) (filter/ select/ arrange/ mutate/ summarise)

by IT두잇 2022. 3. 17.

R에서는 dplyr 패키지를 이용하여 데이터 전처리를 진행할 수 있습니다.

dplyr 함수는 아래 8가지가 있으며, 오늘은 첫 5가지 함수에 대해 알아보려고 합니다.

 

  • filter( )
  • select( )
  • arrange( )
  • mutate( )
  • summarise( )
  • group_by( )
  • left_join( )
  • bind_rows( )

filter( ): 행 추출

예시 1) 1반 또는 2반 값만 출력

filter(df, class == '1' | class == '2')
#또는
df %>% filter(class == '1' | class == '2')

 

예시 2) 수학 50 이상, 영어 80 이상인 행 출력

df %>% filter(math >= 50, english >= 80)

 

예시 3) 위 두 조건 합쳐서 입력

df %>%
  filter(class == '1' | class == '2') %>%
  filter(math >= 50, english >= 80)

 


select( ) : 열(변수) 추출

예시 1)  math, english 열 출력

df %>% select(math, english)

 

예시 2)  science 열만 제외하고 출력

df %>% select(-science)

 

 


arrange( ): 데이터 정렬

예시 1)  math열을 기준으로 오름차순 정렬

df %>% arrange(math)

 

예시 2) score열을 기준으로 내림차순 정렬

df %>% arrange(desc(score))

 

 


mutate( ): 변수 추가

예시 1) math, science, art의 총합을 구해 total 변수 생성

df %>% mutate(total = math, science, art)

 

예시 2. math, science, art의 평균을 구해 mean변수 생성

df %>% mutate(mean = (math, science, art)/3)

 

 


summarise( ): 통계치 산출

summarise( )는 대개 group_by( ) 함수와 함께 사용됩니다.

 

예시 1) 수학 평균 요약

df %>% summarise('math_mean' = mean(math))

 

예시 2) 반별 평균 출력

df %>% group_by(class) %>% summarise('mean' = mean(total))

 


 

연습문제 1. 5반 학생들의 미술 점수만 출력하는 함수를 작성해보시오.

 

정답:

df %>% filter(class == '5') %>% select(class, art)

 

연습문제 2. 나이는 내림차순, 영어와 수학 점수는 오름차순으로 정렬해보시오.

정답:

df %>% arrange(desc(age), english & math)

 

연습문제 3. 제조사(manufacturer)별로 SUV인 차의 고속도로 주행연비(hwy)의 평균을 구해보시오.

 

정답:

df %>% group_by(manufacturer) %>%
  filter(class == 'suv') %>%
  summarise(hwy_mean = mean(hwy))