R로 데이터 다루기

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


수강중

6. 데이터 들여다보기

데이터 불러오기- 판매 건수 데이터

매출 데이터를 다운받는다.

read.csv로 불러오기

stringsAsFactorsF로, fileEncodingUTF-8로 설정한다. stringAsFactors에서 string은 문자열이다. 데이터에서 판매 건수는 숫자이지만, 지역구나 성별은 문자열로 되어있기 때문에 factor로 자동으로 변환해주는 기능이다.

sales <- read.csv('sales.csv', stringsAsFactors = F, fileEncoding = 'UTF-8')

데이터 확인

head

전체 데이터를 다 보면 화면에 찍힐 때마다 필요한 메모리의 양이 많기 때문에 엄청 느려진다. 그래서 데이터를 불러왔을 때는 head 로 일부만 탐색적으로 알아볼 필요가 있다.

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

dim

dim으로 데이터의 행과 열을 확인한다.

dim(sales)
[1] 262800      7

colnames

colnames로 데이터의 columns를 확인한다.

table

table(sales$구)로 구 별로 데이터가 몇 개 있는지 확인할 수 있다.

table(sales$)
  강남구   강동구   강북구   강서구   관악구   광진구   구로구   금천구 
   10502    10537    10511    10553    10513    10533    10499    10555 
  노원구   도봉구 동대문구   동작구   마포구 서대문구   서초구   성동구 
   10494    10473    10508    10546    10513    10467    10536    10513 
  성북구   송파구   양천구 영등포구   용산구   은평구   종로구     중구 
   10494    10485    10470    10483    10521    10542    10536    10526 
  중랑구 
   10490 

dplyr chain 을 이용하기

아래와 같이 하면 table 과 동일한 결과가 나온다.

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 %>% select() %>% table
.
  강남구   강동구   강북구   강서구   관악구   광진구   구로구   금천구 
   10502    10537    10511    10553    10513    10533    10499    10555 
  노원구   도봉구 동대문구   동작구   마포구 서대문구   서초구   성동구 
   10494    10473    10508    10546    10513    10467    10536    10513 
  성북구   송파구   양천구 영등포구   용산구   은평구   종로구     중구 
   10494    10485    10470    10483    10521    10542    10536    10526 
  중랑구 
   10490 

아래와 같이 하면 성별에 대한 table이 나온다.

sales %>% select(성별,) %>% table
    구
성별 강남구 강동구 강북구 강서구 관악구 광진구 구로구 금천구 노원구 도봉구
  남   4731   4724   4708   4771   4744   4764   4753   4742   4707   4715
  여   4745   4734   4716   4745   4728   4734   4709   4749   4732   4737
    구
성별 동대문구 동작구 마포구 서대문구 서초구 성동구 성북구 송파구 양천구
  남     4758   4735   4734     4703   4764   4713   4705   4715   4699
  여     4717   4721   4742     4686   4750   4776   4696   4710   4730
    구
성별 영등포구 용산구 은평구 종로구 중구 중랑구
  남     4709   4732   4723   4712 4758   4687
  여     4763   4721   4759   4789 4731   4694

아래와 같이 하면 점포명에 대한 table이 나온다.

sales %>% select(점포명) %>% table
.
       @   레스탑 베타문구 스탑버스 원조백반 원조한식 전주비빔 카페베타 
   26280    29585    29659    29424    29505    29641    29564    29565 
키즈랜드 
   29577 

dplyr chain 을 이용하기 - summary 사용

판매건수를 table로 하게 되면 연속적으로 너무 많아 해석하기 힘들기 때문에 summary 이용한다. 판매건수에 대한 평균, 최소, 최댓값을 알려준다.

sales %>% select(판매건수) %>% summary
    판매건수    
 Min.   :  1.0  
 1st Qu.:125.0  
 Median :251.0  
 Mean   :250.6  
 3rd Qu.:377.0  
 Max.   :500.0  

업종 코드 데이터를 이용한 실습

업종 정보를 다운받은 후, 업종 코드 데이터를 불러온다.

product.code <- read.csv('productcode.csv', stringsAsFactors = F, fileEncoding = "UTF-8")

업종코드 데이터를 탐색적으로 확인한다.

product.code %>% head
  업종코드 업종명  
1 1001     유아용품
2 1002     한식    
3 1100     완구    
4 12AA     카페    

데이터의 행과 열을 확인한다.

dim(product.code)
[1] 4 2

기후 데이터를 이용한 실습

기상 데이터를 다운받아 연다.

일별이 아닌 월별로 데이터가 있다. 강수량은 결측치가 있다. 전산상의 오류나 사람이 입력 못 했을 경우에 결측치가 있다.

climate <- read.csv('seoul_climate.csv', stringsAsFactors = F, fileEncoding = "UTF-8")

기후 데이터를 탐색적으로 확인한다.

climate %>% head
  시         구     연월   위도     경도    강수량
1 서울특별시 강남구 201401 37.49666 127.063  NA   
2 서울특별시 강남구 201402 37.49666 127.063 187   
3 서울특별시 강남구 201403 37.49666 127.063 122   
4 서울특별시 강남구 201404 37.49666 127.063   0   
5 서울특별시 강남구 201405 37.49666 127.063  NA   
6 서울특별시 강남구 201406 37.49666 127.063 144   

select(연월)을 이용해 연월 데이터를 선택한다. 연월 25일만 나와서 자료가 비어있음을 알 수 있다.

climate %>% select(연월) %>% table
.
201401 201402 201403 201404 201405 201406 201407 201408 201409 201410 201411 
    25     25     25     25     25     25     25     25     25     25     25 
201412 201501 201502 201503 201504 201505 201506 201507 201508 201509 201510 
    25     25     25     25     25     25     25     25     25     25     25 
201511 201512 
    25     25 

select(강수량)을 이용해 데이터를 선택한다. 강수량은 연속적인 변수이기 때문에 해석을 위해 table 대신 summary를 사용한다. 오차(결측치)가 있는 날도 있다.

climate %>% select(강수량) %>% summary
     강수량     
 Min.   :  0.0  
 1st Qu.:  0.0  
 Median : 89.0  
 Mean   : 85.4  
 3rd Qu.:151.0  
 Max.   :286.0  
 NA's   :103