변수 이름 바꾸기 및 새로운 변수 추가하기(mutate)
dplyr 실행
library(dplyr)
Attaching package: ‘dplyr’ The following objects are masked from ‘package:stats’: filter, lag The following objects are masked from ‘package:base’: intersect, setdiff, setequal, union
데이터 불러오기
sales <- read.csv('sales.csv', stringsAsFactors = F,
fileEncoding = 'UTF-8')
colnames
colnames
로 변수 이름 확인한다.
"시", "구", "성별", "점포명", "점포코드", "연월일", "판매건수"
7개의 columns을 확인 할 수 있다.
colnames(sales)
[1] "시" "구" "성별" "점포명" "점포코드" "연월일" "판매건수"
변수명 한글을 영어로 변경
dplyr뿐 아니라 r 전반적으로 데이터에 한글 변수가 있으면 특정 함수에서 오류가 나는 경우가 있다. 따라서 어떤 오류가 발생할 지 모르기 때문에 변수 이름은 영어로 바꿔두는 것이 좋다.
colnames(sales) <- c('city', 'district', 'gender', 'sales.nm', 'sales.cd', 'ynd', 'sales.num')
변수명 오타 수정
변수가 몇번째 columns인지 확인하고 그 숫자에 해당하는 변수의 이름을 대입한다.
colnames(sales)[6]<-'ymd'
변수명 여러 개를 바꿔주는 경우, 해당하는 변수의 위치를 c를 사용해서 변경하면 된다.
colnames(sales)[c(6,7)] <- c('ymd', 'sales.num')
colnames를 변경할 때 유의점
colnames를 변경할 때 colum의 위치의 갯수와 입력하는 변수의 갯수가 일치해야한다.
head
head
로 sales
의 1:6 행의 데이터를 확인한다.
sales %>% head
city district gender sales.nm sales.cd ymd sales.num 1 서울특별시 강남구 남 스탑버스 12AA02 20140101 103 2 서울특별시 강남구 여 키즈랜드 100101 20140101 309 3 서울특별시 강남구 여 키즈랜드 100101 20140101 365 4 서울특별시 강남구 남 스탑버스 12AA02 20140101 421 5 서울특별시 강남구 여 스탑버스 12AA02 20140101 413 6 서울특별시 강남구 남 키즈랜드 100101 20140101 428
city 변수 조작
mutate
새로운 변수를 만들거나 동일한 변수에 저장할 때는 dplyr의 mutate
를 사용한다.
substr
substr을 사용해서 첫 번째와 두 번째 글자만 뽑는다.
substr(city,1,2)
결과 city
의 서울특별시
에서 서울
이 출력된다.
sales <- sales %>% mutate(city = substr(city,1,2))
slice
head
대신 slice
를 사용해서 첫 번째, 두 번째 행 데이터를 확인한다.
sales %>% slice(1:2)
city district gender sales.nm sales.cd ymd sales.num 1 서울 강남구 남 스탑버스 12AA02 20140101 103 2 서울 강남구 여 키즈랜드 100101 20140101 309
ymd 변수 조작
기본 r 기능 사용
substr 를 사용하여 ymd
의 연부분을 잘라 새로만든 y
변수에 넣는다
sales$y <- substr(sales$ymd, 1, 4)
다시 substr 을 사용해서 ymd
의 월 부분을 잘라 새로만든 m
변수에 넣는다
sales$m <- substr(sales$ymd, 5, 6)
다시 substr 을 사용해서 ymd
의 일 부분을 잘라 새로만든 d
변수에 넣는다
sales$d <- substr(sales$ymd, 7, 8)
dplyr 사용
장점 - r 기본 함수를 사용하면 한 줄씩 계속 써야하고, sales 이라는곳에 항상 저장해야한다. - dplyr 를 사용하면 훨씬 쉽게 사용할 수 있다. - 한 줄씩 실행하는게 아니라 연속적으로 생성할 것을 준 다음에 한번에 처리할 수 있기 때문에 속도도 향상된다.
이전에 사용한 mutate
을 사용한다. r 기본함수에서는 데이터에서 변수가 뭔지 직접 넘겨줘야되는데, dplyr 에서는 데이터 %>%
이어서 ymd
라고 쓰면 데이터의 변수 ymd
라고 인식을 한다.
업종 코드 변수 조작
sales
코드를 보면 6자리로 되어있다. 점포명마다 하나씩 코드가 있다. 업종 코드에서 6자리 중에 앞의 4글자만 잘라서 코드를 만든다.
이전과 같게 mutate
에서 substr
로 앞의 4자리만 자른후 새로 만든 products.cd
에 저장한다.
sales <- sales %>% mutate(y = substr(ymd, 1, 4),
m = substr(ymd, 5, 6),
d = substr(ymd, 7, 8),
products.cd = substr(sales.cd, 1, 4))
slice(1:2)
를 이용해 새로 생성한 변수 y,m,d
와 product.cd
가 잘 조작되었는 지 확인한다.
sales %>% slice(1:2)
city district gender sales.nm sales.cd ymd sales.num y m d 1 서울 강남구 남 스탑버스 12AA02 20140101 103 2014 01 01 2 서울 강남구 여 키즈랜드 100101 20140101 309 2014 01 01 products.cd 1 12AA 2 1001
ym 변수 생성
paste0
substr
의 반대인 paste
나 paste0
를 사용한다.
paste0
을 이용해서 y
와 m
을 사이에 공백이 없게 붙여 새로운 변수 ym
에 넣어준다.
sales <- sales %>% mutate(ym = paste0(y,m))
slice(1:2)
를 이용해 새로 생성한 변수 ym
이 잘 조작되었는 지 확인한다.
sales %>% slice(1:2)
city district gender sales.nm sales.cd ymd sales.num y m d 1 서울 강남구 남 스탑버스 12AA02 20140101 103 2014 01 01 2 서울 강남구 여 키즈랜드 100101 20140101 309 2014 01 01 products.cd ym 1 12AA 201401 2 1001 201401
select 이용
select
를 통해 ym
변수만 선택하여 table
을 만든다.
sales %>% select(ym) %>% table
. 201401 201402 201403 201404 201405 201406 201407 201408 201409 201410 201411 22365 20220 22297 21474 22304 21567 22310 22379 21660 22307 21682 201412 22235