-
자유자재로 데이터 가공하기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))
[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)
반응형'머신러닝 with R' 카테고리의 다른 글
R 기계학습 모델링 기법 및 알고리즘 (지도학습, 비지도학습, 분류모델, 추정모델, 군집모델, 연관성 모델) (0) 2019.07.22 R 데이터 정제/ 결측치 및 이상치 제거하기 (0) 2019.07.18 자유자재로 데이터 가공하기 1. 데이터 전처리 dplyr 패키지 (0) 2019.07.17 R 데이터 분석의 기초 2. 데이터 수정하기 / 변수 이름 바꾸기/ 파생 변수 생성/ 조건문 ifelse 활용 (예제 있음) (0) 2019.07.16 R 데이터 분석의 기초 1. 데이터 파악하기 - head/tail/dim/View/str/summary (0) 2019.07.16