본문 바로가기

데이터 다루기/Base of R

[R] dplyr 패키지로 데이터 전처리하기

728x90
반응형

안녕하세요, 이번 포스팅에서는 dplyr 패키지에 대해서 배워보도록 하겠습니다.

dplyr 패키지는 R에서 전처리를 할 때, 가장 많이 사용되는 패키지중에 하나입니다.

저도 실제로 가장 많이 사용한 패키지를 고르라고 한다면 이 패키지라고 단언할 수 있어요!

이 패키지에 있는 모든 함수를 알 필요는 없지만, 유용한 함수들은 익혀 두시는 것은 굉장한 이점이라고 생각합니다.

우선 dplyr 패키지를 설치하고 라이브러리에 불어오도록 하겠습니다.

install.packages('dplyr') 
library('dplyr')

저번 포스팅에서 배웠다시피 정말 쉽죠??

저희가 실습해볼 데이터는 R에서 기본으로 제공되는 iris 데이터입니다.

iris 데이터를 간단하게 설명해드리면, 변수로 Sepal (꽃받침), Petal (꽃잎) 의 길이와 두깨에 대한 정보와 Species (품종) 에 대한 정보가 담겨져 있습니다. 이 때, 관측치는 총 150개로 품종으로 setosa, versicolor, virginica 3 종으로 각각 50개로 구성됩니다.

1. select 함수

첫번째로 알아볼 함수는 select 함수입니다. select 함수는 sql을 배워보신 분이라면 굉장히 익숙한 함수입니다.

R에서도 같은 기능을 가지고 있는데, 활용도가 더 무궁무진합니다.

iris %>% select(Sepal.Length) 
Sepal.Length 
1 5.1 
2 4.9 
3 4.7 
4 4.6
5 5.0 
6 5.4 
7 4.6 
...

위와 같이 select 함수는 원하는 변수만을 추출할 수 있습니다.

이 때, %>% 라는 것이 쓰이는데, 이는 dplyr 패키지에서 제공되는 것으로 원래 select 함수안에 iris 데이터셋을 사용할 것이다 라는 정보를 담아야 하지만 %>% 를 사용하면 그 앞에 나온 데이터를 계속해서 사용하겠다는 것을 전달해주는 매개함수라고 생각하시면 됩니다.

2. filter

filter 함수는 주로 select 함수와 함께 사용됩니다.

filter 함수는 말그대로 필터 역할을 제공하며, 원하는 조건에 따라서 데이터를 필터링하고 추출합니다.

iris %>% filter(Species == 'setosa') 
   %>% select(Sepal.Length, Sepal.Width) 

Sepal.Length Sepal.Width
1 5.1 3.5 
2 4.9 3.0 
3 4.7 3.2 
4 4.6 3.1 
5 5.0 3.6 
6 5.4 3.9 
7 4.6 3.4 
8 5.0 3.4 
9 4.4 2.9 
10 4.9 3.1 
...  

filter 함수를 통해서, 품종이 setosa인 데이터만을 추출하며, 꽃받침 길이와 두깨를 알고 싶을 때, 위와 같이 뽑아낼 수 있습니다.

조건을 더 복잡하게 걸수도 있습니다.

iris %>% filter(Species == 'setosa' & Sepal.Length > 5 & Sepal.Width > 4) 
   %>% select(Sepal.Length, Sepal.Width) 
   
Sepal.Length Sepal.Width 
1 5.7 4.4 
2 5.2 4.1 
3 5.5 4.2

품종이 setosa 이면서, 꽃받침의 길이가 5보다 크고, 꽃받침의 두깨가 4보다 큰 데이터를 모두 뽑을 수 있습니다.

3. mutate

mutate 함수는 기존의 변수를 활용하여 새로운 변수를 만들 때 사용됩니다.

예를 들어서, 꽃잎의 길이가 5보다 길면 Long 으로, 5보다 작거나 같으면 Short를 범주로 가지는 변수를 추가해보도록 하겠습니다.

iris %>% mutate(length = ifelse(Sepal.Length>5, 'Long' ,'Short')) 
   %>% select(Species, length) 

Species length 
1 setosa Long 
2 setosa Short 
3 setosa Short 
4 setosa Short 
5 setosa Short 
6 setosa Long 
7 setosa Short
8 setosa Short
9 setosa Short
10 setosa Short
...

위와 같이 select 함수와 함께 사용해서, 기존의 변수와 만들어진 변수를 함께 출력할수도 있습니다.

4. group_by, summarise

group_by 와 summarise 함수는 제가 굉장히 많이 사용하는 함수들입니다.

이 두 함수는 같이 사용되는 경우가 많아서 묶어 놓았습니다.

group_by 는 말그대로, 그룹을 형성시키는 함수이며, summarise는 요약 통계량 (sum, mean, min, max 등...) 을 계산해주는 함수입니다.

iris 데이터에 대해서 각 품종별 꽃받침 길이의 평균을 알고 싶을 때, 이 두 함수가 사용됩니다.

iris %>% group_by(Species) %>% 
   summarise(Sepal.Length = mean(Sepal.Length)) 

# A tibble: 3 x 2 
Species Sepal.Length <fct> <dbl> 
1 setosa 5.01 
2 versicolor 5.94 
3 virginica 6.59
반응형