데이터 분석/R 데이터 처리 & 분석

[R데이터분석] dplyr 패키지를 활용한 데이터전처리(2) (group_by, summarise)

love R 2020. 1. 31. 03:31
반응형

 

group_by 와 summarise 함수를 활용한다면 범주별로 요약통계량을 계산할 수 있습니다.

예를 들어 R 내장 데이터인 iris 데이터셋을 이용해보겠습니다. iris 데이터셋에는 Species 라는 범주형 변수와 꽃받침(Sepal) 의 길이와 너비, 꽃잎(Petal) 의 길이와 너비를 포함하고 있습니다.

 

 

iris 데이터의 구조를 보기 위해 str(iris) 라고 써주면 다음과 같은 결과가 나옵니다.

 

 

5개의 변수에 150개의 관측치과 각 변수 유형이 나와있습니다. Species 변수 유형은 factor 이고 나머지는 숫자형 변수로 구성되어 있네요. 이 때 Species 별로 각 변수의 요약통계량을 계산할 수 있습니다.

 

 

* 본격적으로 들어가기 전에 파이프라인(%>%) 에 대한 내용을 알아보겠습니다. 파이프라인은 dplyr 패키지 함수와 결합하여 사용하면 굉장히 유용합니다.  파이프라인은 다음과 같이 사용할 수 있습니다.

 

datasets %>% 사용할 함수 %>% 사용할 함수 %>% ...

 

이 전에 포스팅한 dplyr 함수를 바탕으로 몇 가지 예를 보겠습니다.

 

* iris 데이터에서 Sepal.Length, Sepal.Width 를 선택

iris %>% select(Sepal.Length, Sepal.Width)

 

* iris 데이터에서 Sepal.Length 가 7 이상인 데이터 추출

iris %>% filter(Sepal.Length>=7)

 

 

* iris 데이터에서 Sepal.Length 가 7 이상이고 Petal.Length 가 6 이상인 데이터 추출

iris %>% filter(Sepal.Length >=7 & Petal.Length>=6)

 

 

* iris 데이터에서 Sepal.Length 가 7 이상이고 Petal.Length 가 6 이상이고 Petal.Width 가 2 이상인 데이터 추출

iris %>% filter(Sepal.Length >=7 & Petal.Length>=6 & Petal.Width>=2)

 

 

 

< Species 별로 Sepal.Length의 요약통계량 계산>

iris 데이터에 Species 별로 그룹화하여 Sepal.Length 의 평균을 계산해보겠습니다.

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

 

 

 

이제 추가적으로 표준편차, 중앙값, 최대값, 최소값을 구해보겠습니다.

iris %>% group_by(Species) %>% summarise(mean(Sepal.Length), sd(Sepal.Length), median(Sepal.Length), max(Sepal.Length), min(Sepal.Length))

 

summarise 함수에 mean(Sepal.Length), sd(Sepal.Length), median(Sepal.Length), max(Sepal.Length), min(Sepal.Length) 을 넣어주게되면 범주별 요약통계량 값이 나옵니다.

 

 

이제 각 변수 명을 따로 지정해주기 위해 다음과 같이 입력합니다.

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

                                                           표준편차 = sd(Sepal.Length),

                                                          중앙값 = median(Sepal.Length),

                                                          최대값 = max(Sepal.Length),

                                                         최소값 = min(Sepal.Length))

 

 

* 요약 정리하면 다음과 같습니다.

 

이렇게 파이프라인과 각 함수를 함께 이용하면 코드를 구성할 때 큰 도움이 됩니다.  파이프연산자를 쓰지 않으면 코드 구성을 알아보기 힘들겠지만 위 그림과 같이 직관적으로 이해할 수 있습니다. group_by의 역할은 범주형 변수의 그룹화를 통해 summarise 함수로 요약통계량을 계산할 수 있습니다.  궁금한 점은 댓글로 남겨주세요!

 

 

 

 

 

 

반응형