SlideShare uma empresa Scribd logo
1 de 43
Data Designer
Class 07
Data Wrangling - 2
꿈꾸는데이터디자이너 시즌2
Join
NA
String(chr)
Date
꿈꾸는데이터디자이너 시즌2
Join
꿈꾸는데이터디자이너 시즌2
Inner Join
Left Join
꿈꾸는데이터디자이너 시즌2
Join two tables
thiswk title
1 War Room
2 Straight Outta Compton
3 A Walk in the Woods
4 Mission Impossible : Rogue Nation
5 The Transporter Refueled
6 No Escape
7 Inside Out
8 The Man From U.N.C.L.E.
9 Un Gallo Con Muchos Huevos
10 Sinister 2
lastwk title
1 Straight Outta Compton
2 War Room
3 Mission Impossible : Rogue Nation
4 No Escape
5 Sinister 2
6 The Man From U.N.C.L.E.
7 Hitman: Agent 47
8 Ant-Man
9 Jurassic World
10 The Gift
꿈꾸는데이터디자이너 시즌2
Join two tables
thiswk title
1 War Room
2 Straight Outta Compton
3 A Walk in the Woods
4 Mission Impossible : Rogue Nation
5 The Transporter Refueled
6 No Escape
7 Inside Out
8 The Man From U.N.C.L.E.
9 Un Gallo Con Muchos Huevos
10 Sinister 2
lastwk title
1 Straight Outta Compton
2 War Room
3 Mission Impossible : Rogue Nation
4 No Escape
5 Sinister 2
6 The Man From U.N.C.L.E.
7 Hitman: Agent 47
8 Ant-Man
9 Jurassic World
10 The Gift
꿈꾸는데이터디자이너 시즌2
inner join
thiswk title
1 War Room
2 Straight Outta Compton
4 Mission Impossible : Rogue Nation
6 No Escape
8 The Man From U.N.C.L.E.
10 Sinister 2
lastwk title
1 Straight Outta Compton
2 War Room
3 Mission Impossible : Rogue Nation
4 No Escape
5 Sinister 2
6 The Man From U.N.C.L.E.
꿈꾸는데이터디자이너 시즌2
inner join
thiswk title lastwk
1 War Room 2
2 Straight Outta Compton 1
4 Mission Impossible : Rogue Nation 3
6 No Escape 4
8 The Man From U.N.C.L.E. 6
10 Sinister 2 5
꿈꾸는데이터디자이너 시즌2
left join
thiswk title
1 War Room
2 Straight Outta Compton
3 A Walk in the Woods
4 Mission Impossible : Rogue Nation
5 The Transporter Refueled
6 No Escape
7 Inside Out
8 The Man From U.N.C.L.E.
9 Un Gallo Con Muchos Huevos
10 Sinister 2
lastwk title
1 Straight Outta Compton
2 War Room
3 Mission Impossible : Rogue Nation
4 No Escape
5 Sinister 2
6 The Man From U.N.C.L.E.
꿈꾸는데이터디자이너 시즌2
left join
thiswk title lastwk
1 War Room 2
2 Straight Outta Compton 1
3 A Walk in the Woods NA
4 Mission Impossible : Rogue Nation 3
5 The Transporter Refueled NA
6 No Escape 4
7 Inside Out NA
8 The Man From U.N.C.L.E. 6
9 Un Gallo Con Muchos Huevos NA
10 Sinister 2 5
꿈꾸는데이터디자이너 시즌2
Join 실습
꿈꾸는데이터디자이너 시즌2
movie_thiswk = read.csv('weekly_thiswk.csv',
stringsAsFactors = FALSE)
movie_lastwk = read.csv('weekly_lastwk.csv',
stringsAsFactors = FALSE)
movie_data = read.csv('weekly_boxoffice_data.csv',
stringsAsFactors = FALSE)
data 불러오기
꿈꾸는데이터디자이너 시즌2
데이터 불러올 때 주의사항
- 데이터가 로드되지 않는 경우 살펴볼 것
- 파일이 프로젝트 폴더에 들어가 있는가 ?
- 프로젝트 폴더로 파일을 옮긴다(권장)
- 파일이 있는 폴더를 setwd()로 지정(Project : none 일경우)
- 프로젝트 폴더 안에다가 새로운 하위폴더를 만들었나?
- 파일 경로에 해당 폴더까지 추가
- 안전하게 tab 버튼을 이용하자
- stringsAsFactors 옵션 여부
- 한글 인코딩
꿈꾸는데이터디자이너 시즌2
dplyr join
# 기준이 되는 열의 이름이 같을 때
%>%
????_join( , by = )
# 기준이 되는 열의 이름이 다를 때
%>%
????_join( ,
by = c( = ))
꿈꾸는데이터디자이너 시즌2
dplyr join
movie_thiswk %>%
inner_join(movie_lastwk, by = 'title')
movie_thiswk %>%
left_join(movie_lastwk, by = 'title')
movie_thiswk %>%
left_join(movie_data, by = c('title' = 'titl'))
꿈꾸는데이터디자이너 시즌2
vignette('two-table')
꿈꾸는데이터디자이너 시즌2
NA
꿈꾸는데이터디자이너 시즌2
Not Available
꿈꾸는데이터디자이너 시즌2
NA
NA is a logical constant of length 1
which contains a missing value indicator
꿈꾸는데이터디자이너 시즌2
movie_rank = movie_thiswk %>%
left_join(movie_lastwk, by = 'title')
movie_rank$lastwk
is.na(movie_rank$lastwk)
complete.cases(movie_rank)
꿈꾸는데이터디자이너 시즌2
is.na(movie_rank$lastwk)
complete.cases(movie_rank)
movie_rank$lastwk 2 1 NA 3 NA 4 NA 6 NA 5
F F T F T F T F T F
T T F T F T F T F T
꿈꾸는데이터디자이너 시즌2
movie_rank %>%
filter(is.na(movie_rank$lastwk))
movie_rank %>%
filter(complete.cases(movie_rank))
꿈꾸는데이터디자이너 시즌2
NA값 처리가 중요한 이유
꿈꾸는데이터디자이너 시즌2
mean(c(1,2,3,4,5)) # : 3
mean(c(1,2,3,4,5,NA)) # : NA
꿈꾸는데이터디자이너 시즌2
numbers = c(1:4, NA, 5:10)
mean(numbers)
# 해결책1
mean(numbers, na.rm = TRUE)
# 해결책2
numbers_nona = ifelse(is.na(numbers)==TRUE, 0, numbers)
mean(numbers_nona)
꿈꾸는데이터디자이너 시즌2
ifelse(is.na(numbers)==TRUE, 0, numbers)
ifelse(조건, True일 때 값, False일 때 값)
1 2 3 4 NA 5 6 7 8 9 10
1 2 3 4 0 5 6 7 8 9 10
numbers
F F F F T F F F F F Fis.na(numbers)
꿈꾸는데이터디자이너 시즌2
movie_rank %>%
mutate(
lastwk_na = ifelse(is.na(lastwk)==TRUE, 0, lastwk)
)
꿈꾸는데이터디자이너 시즌2
stringr
꿈꾸는데이터디자이너 시즌2
# 패키지 설치는 한 번만 하면 됩니다
install.packages('stringr')
# 라이브러리는 함수 쓰기전에 꼭 불러주세요
# R 껐다가 켜면 초기화됩니다 다시 불러주세요
library(stringr)
꿈꾸는데이터디자이너 시즌2
str_replace(' ',' ',' ')
str_replace(원본 문자열, 찾으려고 하는 패턴/단어, 바꿀 단어)
꿈꾸는 데이터 디자이너
나는 데이터 디자이너
꿈꾸는데이터디자이너 시즌2
str_replace(' ',' ',' ')
꿈꾸는 꿈꾸는 데이터 디자이너
나는 꿈꾸는 데이터 디자이너
str_replace_all(' ',' ',' ')
꿈꾸는 꿈꾸는 데이터 디자이너
나는 나는 데이터 디자이너
꿈꾸는데이터디자이너 시즌2
str_detect(원본 문자열, 찾으려고 하는 패턴/단어)
str_detect(movie_data$distributor, 'Pictures')
movie_data %>%
filter(str_detect(distributor, 'Pictures'))
distributor
1 TriStar Pictures
2 Universal Pictures
3 Broad Green Pictures
4 Paramount Pictures
5 Walt Disney Studios Motion Pictures
6 Warner Bros. Pictures Distribution
......
꿈꾸는데이터디자이너 시즌2
특정 단어로 끝나는 항목 찾기
str_detect(movie_data$distributor, 'Pictures$')
movie_data %>%
filter(str_detect(distributor, 'Pictures$'))
distributor
1 TriStar Pictures
2 Universal Pictures
3 Broad Green Pictures
4 Paramount Pictures
5 Walt Disney Studios Motion Pictures
6 Warner Bros. Pictures Distribution
......
꿈꾸는데이터디자이너 시즌2
특정 단어로 시작하는 항목 찾기
str_detect(movie_data$distributor, '^Sony')
movie_data %>%
filter(str_detect(distributor, '^Sony'))
distributor
1 Sony Pictures Releasing
2 Sony Pictures Classics
3 Sony Pictures Classics
4 Sony Pictures Classics
......
꿈꾸는데이터디자이너 시즌2
Date
꿈꾸는데이터디자이너 시즌2
# 현재 시각
time = Sys.time()
# 요일
weekdays(time)
# 월
months(time)
# 분기
quarters(time)
꿈꾸는데이터디자이너 시즌2
strftime(time, "%m/%d") 09/09
strftime(time, "%Y-%m-%d") 2015-09-09
strftime(time, "%y-%m-%d") 15-09-09
strftime(time, "%Y") 2015
# 일요일을 0으로 두었을 때 요일 표기
strftime(time, "%w") 3
다양한 포맷에 대해서는
?strftime 을 통해 살펴볼 수 있다
꿈꾸는데이터디자이너 시즌2
str_time = '20150909'
date_time = as.Date(str_time, format = '%Y%m%d')
date_time + 30
# 결과물
> "2015-10-09"
chr to Date
꿈꾸는데이터디자이너 시즌2
aapl
# install.packages('gcookbook')
library(gcookbook)
aapl %>%
mutate(year = strftime(date, '%Y')) %>%
group_by(year) %>%
summarise(price = mean(adj_price)) %>%
print(n=30)
연도 계산하기
그룹 지정
그룹별 평균 계산
30개 출력
꿈꾸는데이터디자이너 시즌2
aapl
aapl %>%
mutate(weekday = weekdays(date)) %>%
group_by(weekday) %>%
summarise(price = mean(adj_price))
요일 계산하기
그룹 지정
그룹별 평균 계산
꿈꾸는데이터디자이너 시즌2
cumGross
1 $27,860,000
2 $149,997,000
3 $12,245,900
4 $182,537,000
5 $9,000,000
...
cumGross열은 현재 chr
숫자 형태로 변경하기
'$' 패턴으로 $ 제거
',' 패턴으로 , 제거
as.numeric()을 통해 숫자로 변경cumGross
1 27860000
2 149997000
3 12245900
4 182537000
5 9000000
...
과제1
꿈꾸는데이터디자이너 시즌2
과제2
aapl 데이터로 월별 평균가격 계산하기
[week7]R_Wrangling(2)

Mais conteúdo relacionado

Mais de neuroassociates

[week16] D3.js_Transition
[week16] D3.js_Transition[week16] D3.js_Transition
[week16] D3.js_Transitionneuroassociates
 
[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자neuroassociates
 
[Week15] D3.js_Scatter_Chart
[Week15] D3.js_Scatter_Chart[Week15] D3.js_Scatter_Chart
[Week15] D3.js_Scatter_Chartneuroassociates
 
[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)neuroassociates
 
[Week14] D3.js_Scale and Axis
[Week14] D3.js_Scale and Axis[Week14] D3.js_Scale and Axis
[Week14] D3.js_Scale and Axisneuroassociates
 
[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chartneuroassociates
 
[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자neuroassociates
 
[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자neuroassociates
 
[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자neuroassociates
 
[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자neuroassociates
 
[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자neuroassociates
 
[시즌2, week3] R Basic
[시즌2, week3] R Basic[시즌2, week3] R Basic
[시즌2, week3] R Basicneuroassociates
 
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부neuroassociates
 
꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회neuroassociates
 

Mais de neuroassociates (20)

[week16] D3.js_Transition
[week16] D3.js_Transition[week16] D3.js_Transition
[week16] D3.js_Transition
 
[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자[week8] 데이터읽어주는남자
[week8] 데이터읽어주는남자
 
[Week15] D3.js_Scatter_Chart
[Week15] D3.js_Scatter_Chart[Week15] D3.js_Scatter_Chart
[Week15] D3.js_Scatter_Chart
 
[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)[Week14] D3.js_Scale and Axis (보충자료)
[Week14] D3.js_Scale and Axis (보충자료)
 
[Week14] D3.js_Scale and Axis
[Week14] D3.js_Scale and Axis[Week14] D3.js_Scale and Axis
[Week14] D3.js_Scale and Axis
 
[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart[Week13] D3.js_Bar Chart
[Week13] D3.js_Bar Chart
 
[Week12] D3.js_Basic2
[Week12] D3.js_Basic2[Week12] D3.js_Basic2
[Week12] D3.js_Basic2
 
[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자[week6] 데이터읽어주는남자
[week6] 데이터읽어주는남자
 
[week12] D3.js_Basic
[week12] D3.js_Basic[week12] D3.js_Basic
[week12] D3.js_Basic
 
[week9]R_statics
[week9]R_statics[week9]R_statics
[week9]R_statics
 
[Week8]R_ggplot2
[Week8]R_ggplot2[Week8]R_ggplot2
[Week8]R_ggplot2
 
[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자[Week5]데이터읽어주는남자
[Week5]데이터읽어주는남자
 
[Week5]R_scraping
[Week5]R_scraping[Week5]R_scraping
[Week5]R_scraping
 
[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자[Week4]데이터읽어주는남자
[Week4]데이터읽어주는남자
 
[Week4] Google refine
[Week4] Google refine[Week4] Google refine
[Week4] Google refine
 
[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자[Week3]데이터읽어주는남자
[Week3]데이터읽어주는남자
 
[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자[Week2]데이터읽어주는남자
[Week2]데이터읽어주는남자
 
[시즌2, week3] R Basic
[시즌2, week3] R Basic[시즌2, week3] R Basic
[시즌2, week3] R Basic
 
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
꿈꾸는 데이터 디자이너 시즌2 교육 설명회 2부
 
꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회꿈꾸는 데이터 디자이너 시즌2 교육설명회
꿈꾸는 데이터 디자이너 시즌2 교육설명회
 

[week7]R_Wrangling(2)