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)

[week7]R_Wrangling(2)