안녕하세요.
Rstudio 데이터 전처리 및 가공에 필수적인 패키지 dplyr에 대해서 알아보겠습니다.
dplyr 패키지 개요
▣ dplyr 패키지란?
R tidyverse의 핵심 패키지 중 하나이며 데이터 프레임 조작에 특화된 함수 세트
※ tidyverse: ggplot2, dplyr, tidyr, readr, purrr, tibble, stringr, forcats 등 데이터 모델링, 변환, 시각화 등 제공
▣ dplyr 패키지 주요 함수
함수 | 기능 |
filter() | 행(row) 추출 |
select() | 변수(열, column) 추출 |
arrange() | 정렬 |
mutate() | 변수 추가 |
summarise() | 통계치 산출 |
group_by() | 집단별로 나누기 |
left_join() | 데이터 합치기 (열 기준) |
bind_rows() | 데이터 합치기 (행 기준) |
▣ dplyr 핵심 파이프(pipes)
파이프는 함수 출력값을 받아 다음번 함수에 곧바로 전송해주는 방법으로, 동일한 데이터셋에 많은 작업을 할 때 유용함.
R에서 파이프는 %>% 모양으로 단축키 Ctrl+Shift+M으로 사용가능함
R dplyr 활용 예제
분석 과제. 미국 동북중부 437개 지역의 인구통계 정보를 담고 있는 'midwest' 데이터를 사용해 데이터 분석 문제를 해결해 보세요. 'midwest'는 'ggplot2' 패키지에 들어 있습니다. (출처 : Do it R 쉽게 배우는 데이터 분석)
## 패키지 설치 ##
install.packages("dplyr")
install.packages("ggplot2")
library(dplyr)
library(ggplot2)
Q1. 'popadults'는 해당 지역의 성인 인구, 'poptotal'은 전체 인구를 나타냅니다. 'midwest' 데이터에 '전체 인구 대비 미성년 인구 백분율' 변수를 추가하세요.
# midwest 불러오기
midwest <- as.data.frame(ggplot2::midwest)
# midwest에 백분율 변수 추가
midwest <- midwest %>%
mutate(ratio_child = (poptotal-popadults)/poptotal*100)
# 출력
head(midwest$ratio_child)
[1] 34.48631 36.72125 35.50130 37.44076 31.81974 34.30845
Q2. 미성년 인구 백분율이 가장 높은 상위 5개 'county'(지역)의 미성년 인구 백분율을 출력하세요.
midwest %>%
arrange(desc(ratio_child)) %>% # ratio_child 내림차순 정렬
select(county, ratio_child) %>% # county, ratio_child 추출
head(5) # 상위 5행 출력
# 출력 결과
NO county ratio_child
1 ISABELLA 51.50117
2 MENOMINEE 50.59126
3 ATHENS 49.32073
4 MECOSTA 49.05918
5 MONROE 47.35818
Q3. 분류표의 기준에 따라 미성년 비율 등급 변수를 추가하고, 각 등급에 몇 개의 지역이 있는지 알아보세요.
분류 | 기준 |
large | 40% 이상 |
middle | 30%~40% 미만 |
small | 30% 미만 |
midwest <- midwest %>%
mutate(grade = ifelse(ratio_child >= 40, "large",
ifelse(ratio_child >= 30, "middle", "small")))
# 미성년 비율 등급 빈도표
table(midwest$grade)
large middle small
32 396 9
Q4. 'popasian'은 해당 지역의 아시아인 인구를 나타냅니다. '전체 인구 대비 아시아인 인구 백분율' 변수를 추가하고, 하위 10개 지역의 'state'(주), 'county'(지역명), 아시아인 인구 백분율을 출력하세요.
midwest %>%
mutate(ratio_asian = (popasian/poptotal)*100) %>% # 백분율 변수 추가
arrange(ratio_asian) %>% # 내림차순 정렬
select(state, county, ratio_asian) %>% # 변수 추출
head(10) # 상위 10행 출력
# 출력 결과
No state county ratio_asian
1 WI MENOMINEE 0.00000000
2 IN BENTON 0.01059210
3 IN CARROLL 0.01594981
4 OH VINTON 0.02703190
5 WI IRON 0.03250447
6 IL SCOTT 0.05315379
7 IN CLAY 0.06071645
8 MI OSCODA 0.06375925
9 OH PERRY 0.06654625
10 IL PIATT 0.07074865
반응형
'Programming > R' 카테고리의 다른 글
[R] 데이터 전처리, 결측치 (0) | 2022.08.07 |
---|---|
R 연습 사이트 추천 (공부, 예제) (0) | 2022.06.10 |
[R] 반응형 그래프 만들기 plotly, dygraphs (1) | 2021.06.29 |
[R] 통계 분석 및 가설 검정 (t 검정, 상관분석) (0) | 2021.06.27 |
[ R ] 그룹별 누적 합계 구하기 (2) | 2021.04.06 |
댓글