ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자유자재로 데이터 가공하기2. 데이터 전처리/ dplyr 패키지/mpg 데이터 심화 활용
    머신러닝 with R 2019. 7. 18. 12:24

    이번 포스팅에서는 ggplot2 에서 기본으로 제공하는 mpg 데이터를 활용하여 이전 시간에 배운 dplyr 패키지 함수들을 활용하여 복습해보려고 한다.

     

     

    [filter 함수 활용]

    1) displ (배기량)이 4이하인 자동차와 5 이상인 자동차 중 어떤 자동차의 hwy(고속 도로 연비)가 평균적으로 높은지 알아보자.

     

     

    
    displ1 <- mpg %>% filter(displ <=4) #배기량이 4이하인 데이터를 추출해 displ1에 할당 
    displ2 <- mpg %>% filter(displ >=5) #배기량이 5이상인 데이터를 추출해 displ2에 할당 
    mean(displ1$hwy) #배기량이 4이하인 데이터의 고속도로 연비 평균값 
    mean(displ2$hwy) #배기량이 5이상인 데이터의 고속도로 연비 평균값 
    



    배기량이 4이하인 자동차의 hwy의 평균값은 25.96319 이고 5이상인 자동차의 hwy의 평균값은 18.07895로 배기량이 4이하인 자동차의 고속도로 연비가 평균적으로 더 높다.




    2) 자동차 제조 회사에 따라 도시 연비가 다른지 알아보려고 한다. "audi"와 "toyota"중에 어떤 manufacturer(자동차 제조 회사)의 cty(도시연비)가 평균적으로 더 높은지 알아 보자.

     

     

    
    audi <- mpg %>% filter(manufacturer == "audi") 
    toyota <- mpg %>% filter(manufacturer == "toyota") 
    mean(audi$cty) 
    mean(toyota$cty) 


    아우디의 도시연비 평균은 17.61111이고, 도요타의 도시연비 평균은 18.52941로 도요타가 조금 더 높다.



    3) "chevrolet" , "ford", "honda" 자동차의 고속도로 연비 평균을 알아보려고 한다. 이 회사들의 자동차를 추출 한 후 hwy 전체 평균을 구해보자.

     

     

    
    carlist <- mpg %>% filter(manufacturer %in% c("chervolet", "ford", "honda")) 
    mean(carlist$hwy) 
    
    


    해당 자동차 회사들의 hwy 평균값은 22.85294 이다.

     

     

    [select 함수 활용하기]

     

    1) mpg 데이터는 총 11개의 변수로 구성되어 있는데, 이 중 일부만 추출해서 분석에 활용하려고한다. mpg 데이터에서 class(자동차 종류), cty(도시 연비) 변수를 추출해 새로운 변수를 만들어라. 새로만든 데이터의 일부를 출력해 두변수로만 구성되어 있는지도 확인해보자.

     

     

    
    mpg %>% select(class, cty) %>% 
      head(10)
    

     

    2) 자동차 종류에 따라 도시 연비가 다른지 알아보려고한다. class가 "suv"인 자동차와 "compact"인 자동차 중 어떤 자동차의 cty가 더 높은지 알아보라.

     

     

    
    mpg <- as.data.frame(ggplot2::mpg)
    
    mpg_suv <- mpg %>% filter(class == "suv")
    mpg_compact <- mpg %>% filter(class =="compact")
    mean(mpg_suv$cty)
    mean(mpg_compact$cty)

     

    suv의 cty 평균은 13.5이고, compact의 cty는 20.12766 이므로 compact 차량의 도시 연비가 더 높다.

     

     

    [arrange 함수 활용하기]

    1) "audi"에서 생산한 자동차 중에 어떤 자동차 모델의 hwy(고속도로 연비)가 높은지 알아보고 1~5위에 해당하는 자동차의 데이터를 출력해보자.

     

     

    
    mpg <- as.data.frame(ggplot2::mpg)
    mpg %>% filter(manufacturer == "audi") %>%
      arrange(desc(hwy)) %>% 
      head(5)
    

     

     

     

     

    [mutate 함수 활용하기]

    1) mpg 데이터 복사본을 만들고 cty와 hwy를 더한 '합산 연비 변수'를 추가해라.

     

    2) 앞에서 만든 '합산연비변수'를 2로 나눠 '평균 연비 변수'를 추가해라.

     

    3) '평균연비변수'가 가장 높은 자동차 3종의 데이터를 출력해라.

     

     

    
    mpg <- as.data.frame(ggplot2::mpg)
    mpg_copy <- mpg
    mpg_copy <- mpg_copy %>% mutate(total = cty+hwy)
    mpg_copy <- mpg_copy %>% mutate(mean = (cty+hwy)/2)
    mpg_copy %>% arrange(desc(mean)) %>% 
      head(3)

     

    4) 1~3번 문제를 해결할 수 있는 하나로 연결된 dplyr 구문을 만들어서 출력해라. 데이터는 복사본 대신 mpg 원본 이용.

     

     

    
    mpg %>% mutate(total = cty+hwy,
                  mean = (cty+hwy)/2) %>%
      arrange(desc(mean)) %>% 
      head(3)

     

     

     

    [group_by 함수 및 dplyr 조합하기]

     

    Q) 회사별로 "suv" 자동차의 도시 및 고속도로 통합 연비 평균을 구해 내림차순으로 정렬하고 1~5위까지 출력하기 

     

    절차 기능 dplyr 함수
    1 회사별로 분리 group_by()
    2 suv 추출 filter()
    3 통합 연비 변수 생성 mutate()
    4 통합 연비 평균 산출 summarise()
    5 내림차순 정렬 arrange()
    6 1~5위 까지 출력 head()

     

     

    
    mpg <-as.data.frame(ggplot2::mpg)
    mpg %>% 
      group_by(manufacturer) %>%
      filter(class == "suv") %>% 
      mutate(total = (cty+hwy)/2) %>% 
      summarise(total_mean = mean(total)) %>% 
      arrange(desc(total_mean)) %>% 
      head(5)

     

     

     

    1) mpg 데이터의 class 별 cty 평균을 구해보라.

     

    2) 앞에서 구한 cty 평균이 높은 순으로 정렬해 출력해 보라.

     

    
    mpg <-as.data.frame(ggplot2::mpg)
    
    mpg %>% 
      group_by(class) %>% 
      summarise(cty_mean = mean(cty)) %>% 
      arrange(desc(cty_mean))

     

     

     

    3) hwy 평균이 가장 높은 회사 세곳을 출력해 보라.

     

     

    
    mpg %>% 
      group_by(manufacturer) %>% 
      summarise(hwy_mean =mean(hwy)) %>% 
      arrange(desc(hwy_mean)) %>% 
      head(3)

     

     

    4) 각회사별 "compact" 차종 수를 내림차순으로 정렬해 출력해 보라.

     

     

    
    mpg %>% 
      filter(class == "compact") %>% 
      group_by(manufacturer) %>% 
      summarise(number = n()) %>% 
      arrange(desc(number))

     

     

    왼쪽부터 차례로 1+2번 결과, 3번 결과, 4번 결과

     

     

     

    [left_join 함수 활용하기]

     

    1) 연료 가격 데이터 프레임 만들기.

     

     

    
    fuel <- data.frame(fl = c("c", "d", "e", "p", "r"),
                       price = c(2.35, 2.38, 2.11, 2.76, 2.22),
                       stringsAsFactors = F)
    fuel
    	

     

     

    2) mpg 데이터에는 연료 종류를 나타낸 fl 변수는 있지만 연료 가격을 나타낸 변수는 없다. 위에서 만든 fuel 데이터를 이용해 mpg 데이터에 price_fl(연교 가격) 변수를 추가해라.

     

    3) 변수가 잘 추가되었는지 확인하기 위해 model, fl, price_fl 변수를 추출해 앞부분 5행을 출력해 보라.

     

     

    
    mpg <- left_join(mpg, fuel, by = "fl")
    mpg %>% 
      select(model, fl, price) %>%
      head(5)

     

     

     

     

    반응형

    댓글

Designed by Tistory.