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

廿TT

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

ページビュー数の推移の集計など、単純作業に RGoogleAnalytics が便利

動機

これまで R + Google アナリティクス関連のエントリをいくつか書いてきた。
Google アナリティクス - 廿TT を参照。)

R は統計処理に特化した言語だが、もともとぼくが RGoogleAnalytics さわろうと思ったきっかけは、単に「Excel 苦手……。データ集計を使い慣れた R でさらっとやりたい」ということだった。

例えば、
「ここ1年半くらいのページビュー数上位10件のページ、月次推移で出しといて」
という程度のかんたんな作業も、手動でやるとけっこう面倒。

管理画面からやろうとすると、ページビュー数(PV)の多いページを一個ずつクリックしてエクスポート、バラバラのファイルをくっつけ直さなきゃいけない。

f:id:abrahamcow:20141016044734p:plain

こういうのはスクリプト化してちゃっちゃと終わらせて早く帰りたい。

R による実践

「ここ1年半くらいのページビュー数上位10件のページ、月次推移で出す」をやってみる。

まずはオーサライズ。

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

ここでアクセストークンをコピペ。
RGoogleAnalytics をいじっている - 廿TT を参照。)

ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)
sta ="2013-05-01"
en ="2014-09-30"
query$Init(start.date = sta,
           end.date = en,
           dimensions = "ga:yearMonth,ga:PagePath",
           metrics = "ga:pageviews",
#           sort= ,
           max.results = 10000,
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           access_token=access_token)
PVs <- ga$GetReportData(query)
#API でデータ取得

tmp <-tapply(PVs$pageviews, factor(PVs$PagePath), sum)
#ページごとに合算

tmp <- sort(tmp,decreasing = TRUE)
sub1 <- subset(PVs, PagePath %in% names(tmp[1:10]))
  #上位10ページ
  #ここまでで集計は完了

#グラフ作成
t1 <- paste(
  substr(sub1$yearMonth,1,4),
  substr(sub1$yearMonth,5,6),
  "01",
  sep="/")
t1 <- as.Date(t1)
sub1$month <- t1

library(ggplot2)
library(scales)

theme_set(theme_bw())

#折れ線グラフ
ggplot(sub1,aes(x=month,y=pageviews)) + 
  geom_line(aes(colour=PagePath,linetype=PagePath))+
#  facet_wrap(~PagePath)+
  scale_x_date(labels = date_format("20%y/%m")) + 
  scale_y_continuous(labels = comma) +
  labs(x="")

#色付きテーブル
ggplot(sub1,aes(x=month,y=PagePath)) +
  geom_tile(aes(fill = pageviews)) + 
#  geom_text(aes(fill = sub1$pageviews, label = sub1$pageviews)) +
  scale_fill_gradient(low = "white", high = "#f39800") +
  scale_x_date(labels = date_format("20%y/%m"))+
  labs(x="",y="")

f:id:abrahamcow:20141016045602p:plain
折れ線グラフだと、凡例と見くらべるのが大変なので、

f:id:abrahamcow:20141016045611p:plain
色付きテーブル(ヒートマップ)にしてみた。

コードはコピペできるので使い回しがきく。よくある作業をなんどもやる、ということをしなくていい。楽。

Excel でちょうだい」といわれたら、csv に書き出して、

write.csv(sub1,file="PVs.csv")

エクセルで開いて、
f:id:abrahamcow:20141016050016p:plain

ピボットテーブルで集計して、
f:id:abrahamcow:20141016050026p:plain

はいって渡せばいい。
f:id:abrahamcow:20141016050052p:plain

もちろん、「R より VBA のほうが得意。簡単。楽」っていう人は全部エクセルでやればいいと思う。

木こりのジレンマ(愚痴)

旅人は、その木を切る姿を見ていて、木こりが一所懸命切るわりには木がなかなか切れないのを不思議に思って、木こりののこぎりを見てみると、随分と刃こぼれが目立っていた。
 そこで、旅人は親切心で、「木こりさんよ、そののこぎりは随分と刃こぼれが激しいようではないか、のこぎりの目を立直してから切ればもっと良く切れるに違いないだろうから、少し休んで目を立てたらどうですか?」と言った。
 そうすると、木こりは旅人に向かって、「旅人さんよ、ご忠告は非常にありがたいがの、わしは今非常に忙しくってのこぎりの目など立てているヒマがないんじゃよ」と言いながら、一心不乱にまた木を切りはじめた。

木こりのジレンマ - ホリスティック・ライフ・デザイン・ラボ

ぼくは今年1月末まで Google アナリティクス認定パートナー(Google Analytics Partner Services and Technologies)の会社にいたんだけど、そこではデータ抽出とか、管理画面から手動でカチカチやっていた。

ぼくとしては社内に R を普及させて、業務を効率化して、ドキュメンテーションにちょっとした統計処理を加えて付加価値を与えたりしたかったんだが、挫折した。

エクセル作業で毎日終電じゃあ、みんな「ちょっと R の勉強してみようかな」なんて暇ないし、そもそもエクセルしか使ったことない人たち(しかも自分より年上、上司)に R のよさを説明するのは、ぼくにとってはかなり高度なコミュニケーションスキルが要求される事柄だった。

で、けっきょくぼく持病が悪化して辞めちゃったわけなんだけど、経営者のみなさんはどう考えてるんだろう?

「会社のナレッジを外に持ち出さないよう注意しましょう」とかよく言われたけど、それを言ったらおれが業務時間外に勝手に勉強して勝手に実装したおれの「ナレッジ」をなんで会社にタダで提供しなきゃいけないのか……。

社員に勉強する時間を与えないで、残業代も出さないで「会社のナレッジ」がどこから生まれてくると思ってるの? っていっぺん経営層に聞いてみたかったんだけど、要はそれだけお金がないってことなのかな?

ともあれ、ぼくの「ナレッジ」は、今後もブログで公開していきます。よろしくお願いします。

関連エントリ


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