読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

R から API で Google アナリティクスのデータを読むこめるパッケージ, RGoogleAnalytics のクエリ作成方法

R Google アナリティクス

はじめに

RGoogleAnalytics の使用方法は以下の4ステップに分割できる.

  • ステップ1:パッケージのインストール
  • ステップ2:オーサライ
  • ステップ3:クエリの作成
  • ステップ4:データ取得

「ステップ1:パッケージのインストール」は,

install.packages("RGoogleAnalytics")

でいけるはず.

「ステップ2:オーサライズ」は,

library("RGoogleAnalytics")
query <- QueryBuilder()
access_token <- query$authorize()

を流してアクセストークンをコピペする.

「ステップ4:データ取得」は,

dat1 <- ga$GetReportData(query)

を流す.

変数 dat1 に query で要求したデータが格納される.

詳しくは RGoogleAnalytics をいじっている - 廿TT を参照.

今回は、「ステップ3:クエリの作成」について書く.

クエリ作成方法

オーサライズしたら、

ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)

と R のコンソールに流す.

すると、

> ga.profiles
        id                         name
1 72000001 すべてのウェブサイトのデータ
2 78000002 すべてのウェブサイトのデータ

みたいな感じでプロファイルの情報が入る.

欲しいデータを呼び出すクエリの作成は,

query$Init(start.date = "2014-10-01",
           end.date = "2014-10-31",
           dimensions = "ga:landingPagePath",
           metrics = "ga:sessions",
           sort = "-ga:sessions", #降順
           #filters="",
           segment="gaid::-5", #自然検索トラフィック
           #max.results = ,
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           access_token=access_token)

みたいな感じで行う。

query$Init の引数は全部で以下の11個.

  1. start.date =
  2. end.date =
  3. dimensions =
  4. metrics =
  5. sort =
  6. segment=
  7. filters=
  8. max.results =
  9. start.index =
  10. table.id =
  11. access_token=

これで欲しいデータを指定する.

データ取得対象期間

f:id:abrahamcow:20150102202818p:plain

データ取得対象期間は start.date, end.date で指定する.

start.date = "2014-10-01",
end.date = "2014-10-31",

みたいな感じ.

ディメンションと指標

f:id:abrahamcow:20150102203323p:plain

ディメンションと指標は, dimensions, metrics で指定する.

「ディメンション」と「指標」というのは Google アナリティクス独特の用語.

「○○ごとの××」の○○が「ディメンション」××が「指標」だと理解したらいいと思う.

「キーワード」ごとの「目標2の完了数」が見たければ,

dimensions = "ga:keyword",
ga:goal2Completions,

と指定する.

セグメント

f:id:abrahamcow:20150102205442p:plain

「セグメント」は統計用語でいうと「層別」.

gaid::-1 から gaid::-14 までのセグメントが用意されている.

1から14の意味は以下の通り.

  1. All Visits: すべてのセッション
  2. New Visitors: 新規訪問
  3. Returning Visitors: 再訪問
  4. Paid Search Traffic: 有料検索トラフィック
  5. Non-paid Search Traffic: 自然検索トラフィック
  6. Search Traffic: 検索トラフィック
  7. Direct Traffic: 直接訪問, ノーリファラ
  8. Referral Traffic: 参照サイトトラフィック
  9. Visits with Conversions: コンバージョンに至らなかった訪問(セッション)
  10. Visits with Transactions:トランザクションに至らなかった訪問(セッション)
  11. Mobile and Tablet Traffic: モバイル(スマホ)とタブレット
  12. Non-bounce Visits: 直帰しなかったセッション
  13. Tablet traffic: タブレットからのトラフィック
  14. Mobile Traffic: モバイルからのトラフィック

自然検索トラフィックにしぼり込みたかったら

segment="gaid::-5",

と指定する.

また dynamic:: を使うと, オリジナルのセグメントがかけられる.

追記: 2014 年 3 月 27 日をもって dynamic:: プレフィックスのサポートは終了しました。できるだけ早く新しい構文に移行することをおすすめします, とのことCore Reporting API - Segments - Analytics Core Reporting API (v3) — Google Developers

ツイッター経由のトラフィックだけにしぼり込みたかったら

segment="dynamic::ga:source=~twitter"

など.

フィルター

f:id:abrahamcow:20150102210238p:plain

filters 引数もセグメントと似たようなものだが, こちらのほうが細かい指定を想定している.

カナダからのセッションのみにしぼり込みたいときは,

filters="ga:country==Canada"

と入力する.

正規表現も使える.

"Can" から始まる国のみにしぼり込みたいときは,

filters="ga:country==^Can*"

など.

データの行数

f:id:abrahamcow:20150102210720p:plain

max.results = 10000

と入力すると最大で10000行のデータが取れる.

デフォルトだとたしか1000行.

最大で10000行.

10000行以降のデータが欲しいときは,

start.index = 10001

と start.index を指定する.

プロファイル

先にプロファイルの情報を ga.profiles という変数に格納した, と述べた.

> ga.profiles
        id                         name
1 72000001 すべてのウェブサイトのデータ
2 78000002 すべてのウェブサイトのデータ

一つ目のプロファイルのデータが欲しいときは

table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),

とやる. paste は R の文字列をくっつける関数.

table.id = "ga:72000001"

のように入力してもよい.

アクセストークン

アクセストークンはオーサライズしたときに取得したやつそのものなので,

access_token=access_token

と入力する.

RGoogleAnalytics とセットで使うといいおすすめパッケージ

tidyr

RGoogleAnalytics で取得したデータは long-format になっている.

long-format というのは例えば, 「日別のチャネル(訪問経路)ごとのセッション数」

dimensions = "ga:yearMonth,ga:channelGrouping",
metrics = "ga:sessions",

のデータを取得して cg という変数に格納した場合, こんな風に縦にずらっとならぶ.

> head(cg) #冒頭の 6 行を表示
  yearMonth channelGrouping sessions
1    201401         (Other)       25
2    201401          Direct      983
3    201401  Organic Search     1687
4    201401        Referral     1303
5    201401          Social     2252
6    201402          Direct      200

これを wide-format(クロス表のような形式)に変えたい場合, library(tidyr) を使えば,

library(tidyr)
cg2 <- spread(cg,channelGrouping, sessions)

で, 簡単に集計できる. エクセルのピボット集計のようなもの.

> head(cg2) #冒頭の 6 行を表示
  yearMonth (Other) Direct Organic Search Referral Social
1    201401      25    983           1687     1303   2252
2    201402      NA    200           1196      337    114
3    201403       6    267           1546      183    230
4    201404       7    262           2006      115     59
5    201405      18    340           2669      168     61
6    201406      49    267           3239      117    140

逆に wide-format のデータを long-format に変えたいときは,

gather(cg2, variable, value, -yearMonth)

のように書く.

tidyr — シンプルなデータ変形ツール — Watallica metallicus

ggplot2

ggplot2 はデータ可視化用のパッケージ.

それっぽいグラフが簡単にかける.

ggplot2 はもともと long-format のデータを想定して作られているので, RGoogleAnalytics と相性がいい.

例えば,

library(ggplot2)
#x軸をyearMonth, y軸をsessions, 色分けをchannelGroupingにして,
ggplot(cg,aes(x=yearMonth,y=sessions,fill=channelGrouping))+
  geom_bar(stat="identity") #積み上げ棒グラフ

と簡単に作図が可能.

f:id:abrahamcow:20150102213858p:plain

ggplot2 を使う場合

もあわせておすすめ.

レポーティングの例

様々なレポーティングの例は,

Google アナリティクス カテゴリーの記事一覧 - 廿TT

を参照.

リンク集