R 과 GA 연계하기 (googleAnalyticsR)

본 글은 Google Analytics 데이터 가져오기의 후속 포스팅이다.

앞서 언급된 대로 Google 측에서는
GA 데이터 연계를 목적으로 Core Reporting API 라는 인터페이스를 제공한다.

R 에서도 해당 API 를 통해 GA 데이터를 가져올 수 있는데,
그 패키지가 바로 googleAnalyticsR 패키지다.

가령, Google 측이 제공하는 Affinity 세그먼트 별로 제품 조회 수를 알고 싶은 경우,
관련된 샘플 R 코드는 다음과 같다.

코드 별 상세 설명은 주석을 참고 바란다.

# googleAnalyticsR 패키지를 설치 및 로드

install.packages("googleAnalyticsR")
library("googleAnalyticsR")

# R 과 GA를 연동. 별도 브라우저 탭이 뜨고 계정 인증을 하면 된다.

ga_auth()

# GA ID 입력을 위해 해당 목록 조회. Property가 여러 개로 나눠져 있는 경우 유의해서 입력해야 한다.

ga_accounts <- ga_account_list()
View(ga_accounts)

# GA ID 입력
ga_id <- 12345678

# View ID 입력. View ID 는 GA 화면에서 Admin > View > View Settings 에서 조회 가능하다.
view_id <- 98765432

#스키마: https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/

#데이터 호출

Affinity_PV <- google_analytics (view_id,
                                      date_range = c("2020-01-01","2021-05-31"),
                                      metrics = c("ga:pageviews"),
                                      dimensions = c("ga:productDetailViews","ga:interestAffinityCategory"),
                                      anti_sample = TRUE,
                                      max = -1 )

JSON 관련 R 패키지, jsonlite 너로 정했다

R에서 JSON 파일을 다루는 패키지는 3가지 정도 있다. (글은 이 중 1,2만 다룸)

  1. rjson
  2. jsonlite
  3. RJSONIO

복수의 object들을 포함한 json 파일을 R 로 import 하는 경우, jsonlite가 선호된다.

선호 이유는, import 결과물인 list 형태에서
JSON object의 data.frame 추출이 jsonlite에서 더 용이하기 때문이다.

.

#rjson 으로 import
my_j <- rjson::fromJSON(file=’파일명.json’)

#jsonlite 으로 import
my_jl <- jsonlite::fromJSON(‘파일명.json’)

.

위 코드 실행했을 때 결과는 아래와 같다.

rjson

rjson의 결과(my_j)는 Large list 이고,
jsonlite 의 결과(my_jl)는 일반적인 list 이다.

rjson의 결과(my_j)가 Large list 인 이유는,
json array 내 각각의 object 마다 임의 숫자로 numbering이 부여되기 때문이다. (ex.[1], [2], …)
이 numbering 으로 인해 as.data.frame 을 사용하여 list 에서 data frame으로 변환 시 rjson 에서는 오류가 발생한다.
Error in (function (…, row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 0

반면 jsonlite 에서는 성공적으로 변환된다.

.

결론 : jsonlite 를 쓰자.

 

인용은 아니지만, R json 패키지 관련 참고할 만한 링크 : https://rstudio-pubs-static.s3.amazonaws.com/31702_9c22e3d1a0c44968a4a1f9656f1800ab.html

R에서 csv 파일 factor 별로 분할 저장하기

데이터는 아래와 같을 경우,

CUSTOMER_ID CAMPAIGN_ID
<chr> <chr>
1 cno0001 00010
2 cno0002 00010
3 cno0003 00010
4 cno0004 00010
5 cno0005 00011
6 cno0006 00011
7 cno0007 00012
8 cno0008 00012
9 cno0009 00012

 

1. 데이터 Import

library(readr)
dt <- read_csv(“R/파일명.csv”)

 

2. 분할 기준이 될 컬럼을 factor 데이터형으로 변경

dt$CAMPAIGN_ID <- as.factor(dt$CAMPAIGN_ID)

levels(dt_test$CAMPAIGN_ID)
## 변경 결과 확인

 

3.  분할 및 csv 저장

by(dt, dt[,c(“CAMPAIGN_ID”)], function(sub) {
fn <- paste0(‘캠페인번호-‘, sub$CAMPAIGN_ID[1], ‘.csv’)

write.csv(sub, fn, row.names=FALSE)
})

 

cf. 특정 컬럼만 저장하고 싶다면 다음과 같이 실행
write.csv(sub[c(1)], fn, row.names=FALSE)
})

 

→ 결과

캠페인번호-00010.csv
캠페인번호-00011.csv
캠페인번호-00012.csv

PostgreSQL 과 R 연결하기 (R Studio)

R Studio에서 다음 코드 실행

> install.packages(“DBI”)

> install.packages(“odbc”)

> install.packages(“RPostgreSQL”)

# 설치
> require(“RPostgreSQL”)

>con<-dbConnect(dbDriver(“PostgreSQL”), dbname=”dbname“, host=”localhost”, port=5432, user=”user_name“,password=”password“)

> dbListTables(con)
# 접속

 

출처 : https://stackoverflow.com/questions/40642657/connecting-r-to-postgresql-database