R 과 Google Analytics를 활용한 실무 분석

R과 GA를 활용해서 실무에서 간단하게 쓸 수 있는 스킬과 방법론을 학습합니다.

R 과 Google Analytics를 활용한 실무 분석 R과 GA를 활용해서 실무에서 간단하게 쓸 수 있는 스킬과 방법론을 학습합니다.

csv / xlsx 가져오기

R에서 CSV/XLSX 등 용량이 큰 데이터를 가져와서 인덱싱 해보자

CSV, Excel 파일을 불러와보자!

  • 서울시는 행정정보를 깃허브csv, xlsx, json 등 다양한 형태로 올리고 있다.
  • 해당 데이터를 R에 간단하게 넣어보자
  • 다운로드해서 사용하는 것도 좋다.

구분

링크

csv

https://github.com/seoul-opengov/opengov/blob/master/info_list/20161017_20161023_info_list.csv

xlsx

https://github.com/seoul-opengov/opengov/blob/master/info_list/20161017_20161023_info_list.xlsx

팁: R studio의 GUI를 통해서 불러오는 것도 가능합니다.  —— 하지만 기본적으로 R코드를 재사용하는 것이 어렵고, 복잡도가 올라갈수록 관리가 어려워 집니다. 가급적이면 아래와 같이 코드로 불러오는 것을 권장 합니다.

 

CSV 파일 불러오기

csv_sample <- read.csv('/data/20161017_20161023_info_list.csv')


# 7만개의 데이터를 가져왔는데, 확인은 어떻게?
# View(csv_sample) # 새 창을 열어서 preview

head(csv_sample) # 맨위에 6줄만 끌어서 봅니다. 

##     package_id doc_prdctn_dt                       tkcrd_nm

## 1 1.621491e+14      20161017                   일반업무관리

## 2 1.624306e+14      20161019               노면표시공사관리

## 3 1.624909e+14      20161020                   시립병원관리

## 4 1.625613e+14      20161020 소방용수시설및비상소화장치관리

## 5 1.625713e+14      20161017                   일반업무관리

## 6 1.626214e+14      20161018             역사도심관리및운영

##                                                               title

## 1                                                준공검사(감독)조서

## 2 『2016년 노후포장도로정비 노면표시공사』 설계변경(제1회) 검토보고

## 3            2017년도 시립병원 의료장비도입 심의 자문회의 결과 통보

## 4               2016년 비상소화장치함 신설 및 이설 준공계 접수 보고

## 5       정보통신공사(CCTV 등) 발주시 수급자격 및 분리발주 준수 철저

## 6             낙원상가·돈화문로 일대 활성화사업 관련 대관 협조 요청

##        src_dept_doc_no writer othbc_pd rspnber_dept_nm othbc_se cpyrht

## 1 도시공간개선단-13338 안정연      3년  도시공간개선단 부분공개  CC BY

## 2     도로보수과-10381 정병구      5년      도로보수과   비공개  CC BY

## 3 보건의료정책과-33323 이상구      5년  보건의료정책과 부분공개  CC BY

## 4      재난관리과-7991 박창준      5년      재난관리과 부분공개  CC BY

## 5          운영과-8634 김은혜      3년          운영과 부분공개  CC BY

## 6 역사도심재생과-12695 조명철     10년  역사도심재생과     공개  CC BY

##                                            url

## 1  http://opengov.seoul.go.kr/sanction/9949193

## 2  http://opengov.seoul.go.kr/sanction/9978402

## 3  http://opengov.seoul.go.kr/sanction/9999014

## 4 http://opengov.seoul.go.kr/sanction/10011299

## 5  http://opengov.seoul.go.kr/sanction/9962479

## 6  http://opengov.seoul.go.kr/sanction/9964576

엑셀 데이터 불러오기

# readXL 패키지를 활용한다. 
# install.packages("readxl") # 만약 아직 설치를 안했으면 이 패키지 설치합니다. 
library(readxl)

xlsx_sample <- read_excel("~/Documents/DataAnalytics/tstoreda/LINEdata/20161017_20161023_info_list.xlsx", sheet = 1)  
# 엑셀은 반드시 시트 이름을 넣어야 합니다.

head(xlsx_sample)

 

##     package_id doc_prdctn_dt                       tkcrd_nm

## 1 1.621491e+14      20161017                   일반업무관리

## 2 1.624306e+14      20161019               노면표시공사관리

## 3 1.624909e+14      20161020                   시립병원관리

## 4 1.625613e+14      20161020 소방용수시설및비상소화장치관리

## 5 1.625713e+14      20161017                   일반업무관리

## 6 1.626214e+14      20161018             역사도심관리및운영

##                                                               title

## 1                                                준공검사(감독)조서

## 2 『2016년 노후포장도로정비 노면표시공사』 설계변경(제1회) 검토보고

## 3            2017년도 시립병원 의료장비도입 심의 자문회의 결과 통보

## 4               2016년 비상소화장치함 신설 및 이설 준공계 접수 보고

## 5       정보통신공사(CCTV 등) 발주시 수급자격 및 분리발주 준수 철저

## 6             낙원상가·돈화문로 일대 활성화사업 관련 대관 협조 요청

##        src_dept_doc_no writer othbc_pd rspnber_dept_nm othbc_se cpyrht

## 1 도시공간개선단-13338 안정연      3년  도시공간개선단 부분공개  CC BY

## 2     도로보수과-10381 정병구      5년      도로보수과   비공개  CC BY

## 3 보건의료정책과-33323 이상구      5년  보건의료정책과 부분공개  CC BY

## 4      재난관리과-7991 박창준      5년      재난관리과 부분공개  CC BY

## 5          운영과-8634 김은혜      3년          운영과 부분공개  CC BY

## 6 역사도심재생과-12695 조명철     10년  역사도심재생과     공개  CC BY

##                                            url

## 1  http://opengov.seoul.go.kr/sanction/9949193

## 2  http://opengov.seoul.go.kr/sanction/9978402

## 3  http://opengov.seoul.go.kr/sanction/9999014

## 4 http://opengov.seoul.go.kr/sanction/10011299

## 5  http://opengov.seoul.go.kr/sanction/9962479

## 6  http://opengov.seoul.go.kr/sanction/9964576

데이터프레임(Data Frame)

  • 위와 같이 우리가 쓰는 CSV파일 등을 읽으면 데이터프레임이 됨
  • 즉, column과 row로 이루어진 데이터
  • column별로 다른 타잎을 가질 수 있음(문자, 숫자 등등)
  • 첫번째(user_id)는 카테고리형, 두번째(age)는 숫자형…

데이터프레임의 인덱싱 #1

# 숫자로 인덱싱: BikeData[row번호, col번호] 

csv_sample[2, ] #두번째 row, 첫번째 column

##     package_id doc_prdctn_dt         tkcrd_nm

## 2 1.624306e+14      20161019 노면표시공사관리

##                                                               title

## 2 『2016년 노후포장도로정비 노면표시공사』 설계변경(제1회) 검토보고

##    src_dept_doc_no writer othbc_pd rspnber_dept_nm othbc_se cpyrht

## 2 도로보수과-10381 정병구      5년      도로보수과   비공개  CC BY

##                                           url

## 2 http://opengov.seoul.go.kr/sanction/9978402

 

head(csv_sample[,6], 50) # head 뒤에 숫자를 넣으면 원하는 만큼 숫자의 데이터를 위부터 뽑아볼 수 있습니다. 

##  [1] 안정연 정병구 이상구 박창준 김은혜 조명철 김기현 김정헌 주윤극 김종화

## [11] 이동섭 김도형 배광희 이재순 김회태 김경도 오희원 이노성 임미경 정남숙

## [21] 안영찬 이희원 박순정 오권영 김성수 홍해연 최지락 김수영 김영기 노장현

## [31] 노장현 노장현 노장현 조진희 김석재 한인식 권대운 권대운 조금례 이창해

## [41] 이창해 이창해 이창해 이창해 이창해 이창해 이창해 이창해 이창해 이창해

## 9958 Levels: 간성진 갈은주 강강원 강건욱 강경배 강경석 강경섭 ... 황희성

 

# 조건으로 인덱싱

#관련부서가 동물기확과인 조건 전체

head(csv_sample[csv_sample$rspnber_dept_nm == '동물기획과', ] )

##        package_id doc_prdctn_dt           tkcrd_nm

## 26   1.628125e+14      20161020 예산집행및회계관리

## 195  1.628627e+14      20161017       동물영양관리

## 224  1.628628e+14      20161020 예산집행및회계관리

## 1407 1.628829e+14      20161017   자연학습교실운영

## 1414 1.628829e+14      20161017   자연학습교실운영

## 2340 1.628929e+14      20161017       동물영양관리

##                                                  title src_dept_doc_no

## 26               동물원유지관리비(공공운영비) 교부요청 동물기획과-4329

## 195  물 품 검 사 (수) 조 서 (천장 및 벽체 마감재 구매) 동물기획과-4274

## 224  2016 하반기 전시관 유지관리 비품 구입비 교부 요청 동물기획과-4328

## 1407                   물품검사(수)조서(패트롤 캠페인) 동물기획과-4272

## 1414          물품검사(수)조서(패트롤 행동풍부화 물품) 동물기획과-4273

## 2340     물 품 검 사 (수) 조 서 (동물기획과 책장 구매) 동물기획과-4275

##      writer othbc_pd rspnber_dept_nm othbc_se cpyrht

## 26   홍해연      5년      동물기획과     공개  CC BY

## 195  박선덕      5년      동물기획과     공개  CC BY

## 224    최진      5년      동물기획과     공개  CC BY

## 1407 염인영      5년      동물기획과     공개  CC BY

## 1414 염인영      5년      동물기획과     공개  CC BY

## 2340 박선덕      5년      동물기획과     공개  CC BY

##                                               url

## 26   http://opengov.seoul.go.kr/sanction/10011295

## 195   http://opengov.seoul.go.kr/sanction/9962397

## 224  http://opengov.seoul.go.kr/sanction/10011285

## 1407  http://opengov.seoul.go.kr/sanction/9964539

## 1414  http://opengov.seoul.go.kr/sanction/9964538

## 2340  http://opengov.seoul.go.kr/sanction/9949729

연습문제

  • iris 데이터 확인: R 내장데이터라 뭔가 설치할 필요 없음 (~앞으로 주고장창 쓸 데이터~)
  • data(iris)
  • 전체 150개 row
  • 참고로, Sepal은 꽃받침, Petal은 꽃잎

 

  1. setosa종과 versicolor종만 뽑아서(각각 50 row) 두개의 변수에 저장
  2. 위 둘에 대해 Sepal.Length의 평균값과 Sepal.Width의 평균값 각각 구하기
  3. 두 평균값을 더해본다 (A)
  4. 위 둘에 대해 Sepal.Length와 Sepal.Width를 더한 값 구하기
    1. 50개짜리 벡터로 나와야 함
  5. 이 50개짜리 벡터의 평균값을 구해본다 (B)
  6. A(선평균후가산)와 B(선가산후평균)는 같은가 다른가? 각각의 값은? 얼마인가?
data(iris)

head(iris)

##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species

## 1          5.1         3.5          1.4         0.2  setosa

## 2          4.9         3.0          1.4         0.2  setosa

## 3          4.7         3.2          1.3         0.2  setosa

## 4          4.6         3.1          1.5         0.2  setosa

## 5          5.0         3.6          1.4         0.2  setosa

## 6          5.4         3.9          1.7         0.4  setosa

 

setosa <- iris[iris$Species =="setosa",] 

versicolor <- iris[iris$Species == "versicolor",]



A <- 

  mean(setosa$Sepal.Length) +

  mean(setosa$Sepal.Width) +

  mean(versicolor$Sepal.Length) +

  mean(versicolor$Sepal.Width)



A

## [1] 17.14

 

B.1 <- 

  setosa$Sepal.Length +  versicolor$Sepal.Length + versicolor$Sepal.Width + versicolor$Sepal.Width

  

B.1

##  [1] 18.5 17.7 17.8 14.7 17.1 16.7 17.5 14.7 16.8 15.5 14.4 16.7 15.2 16.2

## [15] 17.2 18.6 17.0 16.3 16.3 15.7 17.7 16.8 15.9 16.8 17.0 17.6 17.4 17.9

## [29] 17.0 15.6 15.1 15.7 16.4 16.9 16.3 17.8 18.4 15.8 16.0 15.6 15.7 16.6

## [43] 15.4 14.6 16.1 16.5 16.6 16.6 15.4 16.3

 

B <- mean(B.1)



B

## [1] 16.482

댓글

코드를 따라하면서 같이 공부해봐요

댓글 본문
작성자
비밀번호
버전 관리
Dusskapark
현재 버전
선택 버전
graphittie 자세히 보기