RでGoogleAnalytics:曜日、時間別アクセス数の取得

RでGoogle Analytics
スポンサーリンク

GoogleAnalyticsの曜日、時間別アクセス数をエクセルへ出力するコマンドとデータをインタラクティブなヒートマップで出力するコマンドです。

サイトのidとトークンファイルの取得と保存方法は「RでGoogle Analyticsの目次」から「RGoogleAnalyticsパッケージ基本的な利用方法」を確認してください。

また、使用ライブラリが整っていない場合やエラーが起きる場合は「解析の準備」の項目を確認してください。初心者でも実行できるようにまとめています。

解析コマンドなどのまとめはこちらから:RでGoogle Analyticsの目次


スポンサーリンク

取得コマンドの紹介

注意!Rstudioからライブラリ”RGoogleAnalytics”と”plotly”を同時に実行するとエラーが起きます。エラー回避の方法として、まずは”RGoogleAnalytics”でデータをエクセルで出力後、”plotly”で図を作成することをお勧めします。

RGoogleAnalyticsでデータをエクセルに出力する

library("RGoogleAnalytics")
library("XLConnect")
library("tcltk")
library("ggplot2")

TableID <- "ga:&#12487;&#12540;&#12479;&#12434;&#21462;&#24471;&#12377;&#12427;&#12469;&#12452;&#12488;&#12398;id&#12434;&#20837;&#21147;"

#&#26332;&#26085;&#12398;&#20006;&#12403;&#38918;&#12399;&#12371;&#12371;&#12391;&#35373;&#23450;
WeekDayAnaData <- data.frame(c("Sunday", "Monday", "Tuesday", "Wednesday",
                               "Thursday", "Friday", "Saturday"))

#&#21462;&#24471;&#12497;&#12521;&#12513;&#12540;&#12479;&#12398;&#35373;&#23450;
query.list <- Init(start.date = "2014-12-01",
                   end.date = "2014-12-31",
                   dimensions = c("ga:hour", "ga:dayOfWeekName"),
                   metrics = "ga:users",
                   max.results = 10000,
                   table.id = TableID)

#&#21462;&#24471;&#12497;&#12521;&#12513;&#12540;&#12479;&#12540;&#12434;&#20966;&#29702;
query <- QueryBuilder(query.list)

#&#12487;&#12540;&#12479;&#12398;&#21462;&#24471;
HourDayData <- GetReportData(query, oauth_token)

#&#26332;&#26085;&#12398;&#22240;&#23376;&#21270;
HourDayData[, 2] <- factor(HourDayData[, 2],
                           levels = WeekDayAnaData[, 1])

#&#26332;&#26085;&#12434;&#20006;&#12403;&#26367;&#12360;
HourDayData <- HourDayData[order(HourDayData[, 2], decreasing = FALSE), ]

#&#12487;&#12540;&#12479;&#12398;&#25972;&#24418;
HourDayData <- reshape(HourDayData, idvar = "hour", timevar = "dayOfWeekName", direction = "wide")

#&#12487;&#12540;&#12479;&#34892;&#21517;&#12395;&#26085;&#12392;&#26376;&#21517;&#12434;&#20184;&#19982;
colnames(HourDayData) <- c("Hour", as.character(WeekDayAnaData[, 1]))

#&#12487;&#12540;&#12479;&#12398;&#26360;&#12365;&#20986;&#12375;&#12289;&#20445;&#23384;&#12501;&#12457;&#12523;&#12480;&#12434;&#36984;&#25246;&#12375;&#12390;&#26360;&#12365;&#20986;&#12375;&#12290;
setwd(paste(as.character(tkchooseDirectory(title = "&#20445;&#23384;&#12487;&#12451;&#12524;&#12463;&#12488;&#12522;&#12434;&#36984;&#25246;"), sep = "", collapse ="")))
writeWorksheetToFile(paste("&#12450;&#12463;&#12475;&#12473;&#12487;&#12540;&#12479;.xlsx", sep = ""), data = HourDayData, sheet = "&#12450;&#12463;&#12475;&#12473;&#12487;&#12540;&#12479;")
########

インタラクティブなヒートマップの作成

plotyライブラリの使用・設定方法は下記記事を参考ください。
Rでインタラクティブなグラフ:便利なPlotlyライブラリのご紹介

library("tcltk")
library("XLConnect")
library("plotly")

###&#12487;&#12540;&#12479;&#12398;&#35501;&#12415;&#36796;&#12415;#####
MasterAnaData <- loadWorkbook(paste(as.character(tkgetOpenFile(title = "GoogleAnalytics&#12487;&#12540;&#12479;&#12434;&#36984;&#25246;",
                                                               filetypes = '{"xlsx&#12501;&#12449;&#12452;&#12523;" {".xlsx"}}',
                                                               initialfile = "*.xlsx")), sep = "", collapse =" "))
AnaData <- readWorksheet(MasterAnaData, sheet = 1)
########

#plotly&#12408;&#12398;&#12450;&#12463;&#12475;&#12473;&#35373;&#23450;&#12290;plotly&#12398;&#12469;&#12452;&#12488;&#12391;&#21462;&#24471;&#12375;&#12383;username&#12392;key&#12434;&#20837;&#21147;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;
py <- plotly(username = "XXXXXXX", key = "XXXXXXX")

#&#12503;&#12525;&#12483;&#12488;&#12487;&#12540;&#12479;&#12398;&#28310;&#20633;
data <- list(
  list(
    z = eval(parse(text =
                     paste(paste("list(c(", paste(AnaData[1, 2:7], collapse = ","), "),", sep = ""),
                           paste("list(", apply(AnaData[-1, 2:7], 1, paste, collapse = ","), ")", sep = "", collapse = ","),
                           ")", sep = ""))),
    x = c("Sunday", "Monday", "Tuesday", "Wednesday",
          "Thursday", "Friday", "Saturday"),
    y = 0:23,
    colorscale = "Portland",
    reversescale = FALSE,
    type = "heatmap"
  )
)

#plotly&#12408;&#12487;&#12540;&#12479;&#12434;&#36865;&#20449;&#12289;&#19978;&#26360;&#12365;&#35377;&#21487;
r <- py$plotly(data, kwargs=list(filename = "HourDayData", fileopt = "overwrite"))

#&#12503;&#12525;&#12483;&#12488;&#12434;&#12502;&#12521;&#12454;&#12470;&#12391;&#34920;&#31034;
browseURL(r$url)
########

出力されるヒートマップ

なお、データは加工してあります。


解析コマンドなどのまとめはこちらから:RでGoogle Analyticsの目次

少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました