R로 데이터 다루기

R에서 dplyr을 이용해 데이터를 추출, 가공하는 방법을 알아봅니다


수강중

18. 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')

head를 이용해 불러온 데이터를 확인한다.

sales %>% head
  시         구     성별 점포명   점포코드 연월일   판매건수
1 서울특별시 강남구 남   스탑버스 12AA02   20140101 103     
2 서울특별시 강남구 여   키즈랜드 100101   20140101 309     
3 서울특별시 강남구 여   키즈랜드 100101   20140101 365     
4 서울특별시 강남구 남   스탑버스 12AA02   20140101 421     
5 서울특별시 강남구 여   스탑버스 12AA02   20140101 413     
6 서울특별시 강남구 남   키즈랜드 100101   20140101 428     

문제

구 & 성별별로 평균판매건수 구하기

group_by로 구와 성별을 묶고, summarise로 평균판매건수 데이터를 요약한다. 결과를 실행하고 res라는 변수에 저장하자.

res <- sales %>%
    group_by(, 성별) %>%
    summarise(평균판매건수 = mean(판매건수))

write.csv

write.csv를 이용해 파일을 res에 저장해보자.

write.csv(res, 'res.csv')

read.csv

res.csv 를 불러오자. Fileencoding은 여러분의 컴퓨터는 윈도우도 있고 맥도 있고 환경이 다 다르니 쓰지 않아도 된다.

read.csv('res.csv', stringsAsFactors = F)
    X   구       성별 평균판매건수
1    1  강남구   NA   254.9571    
2    2  강남구   남   250.0133    
3    3  강남구   여   250.4908    
4    4  강동구   NA   247.9917    

res.new에 불러온 파일을 저장하자.

res.new <- read.csv('res.csv', stringsAsFactors = F)

특이한 점

기존 데이터와 저장하고 난 후의 데이터의 차이점 res 같은 경우 앞에 구, 성별, 판매건수만 있는데, res.new(새로 불러온 데이터)는 X라는 행번호가 붙는다.

head(res.new)
  X 구     성별 평균판매건수
1 1 강남구 NA   254.9571    
2 2 강남구 남   250.0133    
3 3 강남구 여   250.4908    
4 4 강동구 NA   247.9917    
5 5 강동구 남   248.4198    
6 6 강동구 여   249.6779    
head(res)
  구     성별 평균판매건수
1 강남구 NA   254.9571    
2 강남구 남   250.0133    
3 강남구 여   250.4908    
4 강동구 NA   247.9917    
5 강동구 남   248.4198    
6 강동구 여   249.6779    

write.table

행 번호를 없앨 때는 write.csv 대신에 write.table를 사용하고 row.names=F 옵션을 사용한다. csv는 comma separator이다. 데이터가 콤마로 구분 된다. Sep=',' 을 콤마로 해주고 저장을 하면 된다. 결과를 확인하면 콤마로 똑같이 구분이 되어있고 행 번호가 없어진 것을 알 수 있다.

write.table(res, 'res.csv', row.names = F, sep = ',')

파일 불러오기

위와 같은 방법으로 res.new에 불러온 파일을 저장한 후 확인한다.

res.new <- read.csv('res.csv', stringsAsFactors = F)
head(res.new)
  구     성별 평균판매건수
1 강남구 NA   254.9571    
2 강남구 남   250.0133    
3 강남구 여   250.4908    
4 강동구 NA   247.9917    
5 강동구 남   248.4198    
6 강동구 여   249.6779