블로그

dplyr 패키지 활용하기 본문

Computer engineering/R

dplyr 패키지 활용하기

JuNM0418 2019. 4. 4. 23:48

dplyr패키지 설치하기

우선 dplyr패키지를 사용하기 위해서는 설치를 해야한다.

library(dplyr)    #dplyr설치

dplyr 패키지에 있는 함수 알아보기

많이 사용하는 함수들 종류

dplyr 함수 기능
filter() 행 추출
select() 열 추출
arrnage() 정렬
mutate() 변수 추가
summarise() 통계치 산출
group_by() 집단별로 나누기
left_join() 데이터 합치기(열)
bind_rows() 데이터 합치기(행)

함수들을 소개할때에는"Doit R" 이라는 책에서 제공하는"csv_exam.csv"데이터파일을 사용해서 진행하겠습니다.

exam <- read.csv("csv_exam.csv")    #데이터 불러오기

filter()

행을 추출하는 함수

exam %>% filter(class == 1)    #class의 값이 1인 행을 추출

  id class math english science
1  1     1   50      98      50
2  2     1   60      97      60
3  3     1   45      86      78
4  4     1   30      98      58

select()

열을 추출하는 함수

exam %>% select(math)

   math
1    50
2    60
3    45
4    30

arrange()

arrange()함수의 디폴트값은 오름차순이고, 내림차순으로 사용하려면 arrange(desc())로 사용해야합니다.

오름차순

점점 커지는 순서로 줄 세우기

exam %>% arrnage(math)

   id class math english science
1   9     3   20      98      15
2   5     2   25      80      65
3   4     1   30      98      58
4   3     1   45      86      78

내림차순

점점 커지는 순서로 줄 세우기

exam %>% arrange(desc(math))

   id class math english science
1   8     2   90      78      25
2  19     5   89      68      87
3   7     2   80      90      45
4  18     5   80      78      90

mutate()

파생변수 추가하기

exam %>% mutate(total = math + english + science)
#total이라는 변수를 추가하기

   id class math english science total
1   1     1   50      98      50   198
2   2     1   60      97      60   217
3   3     1   45      86      78   209
4   4     1   30      98      58   186

group_by()

집단별로 나누기

group_by()함수에는 범주형 변수만 들어갈 수 있다.

#범주형 변수의 예시#

성별, 제조사, 회사 ..

summarise()

요약하기

summarise()함수에는 연속형 변수만 들어갈 수 있다.

#연속형 변수의 예시#

월급, 나이, 점수 ..


대부분의 분석에서는 group_by()함수와 summarise()함수를 같이 사용하기 때문에 같이 사용하는 예시를 들어보겠습니다.

exam %>% 
    group_by(class) %>%        #클래스별로 나누기
    summarise(mean_math = mean(math))    #클래스별 평균값 요약하기

dplyr 조합하기

mpg 데이터를 사용해서 회사별 SUV자동차의 도시 및 고속도로 통합 연비 평균을 구해 내림차순으로 정렬하고, 1 ~ 5위까지 출력하기

mpg <- as.data.frame(ggplot2::mpg)

mpg %>%
    group_by(manufacturer) %>%        # 회사별로 분리
    filter(class == "suv") %>%        # suv 추출
    mutate(tot = (cty+hwy)/2) %>%        # 통합 연비 변수 생성
    summarise(mean_tot = mean(tot)) %>%        # 통합 연비 평균 산출
    arrange(desc(mean_tot)) %>%        # 내림차순 정렬
    head(5)        # 1 ~ 5위까지 출력

# A tibble: 5 x 2
  manufacturer mean_tot
  <chr>           <dbl>
1 subaru           21.9
2 toyota           16.3
3 nissan           15.9
4 mercury          15.6
5 jeep             15.6

left_join()

가로로 합치기. 즉 기존 데이터에 변수를 추가하는 것

test1 <- data.frame(id = c(1,2,3,4,5),
                    midterm = c(60,80,70,90,85))

test2 <- data.frame(id = c(1,2,3,4,5),
                    final = c(60,80,70,90,85))

total <- left_join(test1, test2, by = "id")
total

  id midterm final
1  1      60    60
2  2      80    80
3  3      70    70
4  4      90    90
5  5      85    85

bind_rows()

세로로 합치기. 즉 기존 데이터에 행을 추가하는 것

group_a <- data.frame(id = c(1,2,3,4,5),
                    test = c(60,80,70,90,85))

group_b <- data.frame(id = c(6,7,8,9,10),
                    test = c(70,83,65,95,80))

group_all <- bind_rows(group_a, group_b)
group_all

   id test
1   1   60
2   2   80
3   3   70
4   4   90
5   5   85
6   6   70
7   7   83
8   8   65
9   9   95
10 10   80

출처

김영우, 쉽게 배우는 R 데이터 분석, 이지퍼블리싱, 2019

Comments