Rでウェブ解析:Google Analyticsでインタラクティブなヒートマップを作成するコード

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

RでGoogle Analyticsからデータを取得して年、月、OS、ページ別の「pageViewsからentrances」を引いた値をインタラクティブなヒートマップで表示するコードを紹介します。なお、表示データは架空の内容です。

クライアントIDやクライアントシークレット、Dimensions & Metricsは下記の目次より確認ください。また、各パッケージの使用方法はサイト内の過去記事を参照ください。

 ・初心者でもできる!RでGoogle Analytics解析の目次
  https://www.karada-good.net/rgoogleanalyticsindex/

パッケージバージョンは記事紹介時に最新のものを使用しています。R version 3.2.0でコマンドを確認しています。


スポンサーリンク

出力

モバイルの方はこちらからご覧いただくと見やすいです。
別ウィンドウで開く


パッケージのインストール

下記コマンドを実行してください。

#必要なパッケージのインストール
#RGoogleAnalyticsパッケージを利用の場合
install.packages("RGoogleAnalytics")

#RGAパッケージを利用の場合
install.packages("RGA")

#他の必要パッケージのインストール
install.packages(c("WriteXLS", "reshape", "d3heatmap"))

実行コマンドの紹介

詳細はコメントを確認してください。

#パッケージの読み込み
library("RGoogleAnalytics")
library("WriteXLS")
library("tcltk")
library("reshape")
library("d3heatmap")

###GoogleAnalyticsへのアクセス設定#####
#クライアントIDを設定
client.id <- "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;ID"

#&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;&#12471;&#12540;&#12463;&#12524;&#12483;&#12488;&#12434;&#35373;&#23450;
client.secret <- "&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;&#12471;&#12540;&#12463;&#12524;&#12483;&#12488;"

#&#12463;&#12521;&#12452;&#12450;&#12531;&#12488;ID&#12362;&#12424;&#12403;&#12471;&#12540;&#12463;&#12524;&#12483;&#12488;&#12398;&#12488;&#12540;&#12463;&#12531;&#12434;&#21462;&#24471;
oauth_token <- Auth(client.id, client.secret)

#&#12503;&#12525;&#12501;&#12449;&#12452;&#12523;&#12398;&#34920;&#31034;
GetProfiles(oauth_token)

#&#12487;&#12540;&#12479;&#12434;&#21462;&#24471;&#12377;&#12427;&#12503;&#12525;&#12501;&#12449;&#12452;&#12523;id&#12434;&#35373;&#23450;
TableID <- "ga:&#12503;&#12525;&#12501;&#12449;&#12452;&#12523;id"

###&#21462;&#24471;&#24180;,&#26376;&#12434;&#35373;&#23450;#####
year <- 2015 #&#21462;&#24471;&#12375;&#12383;&#12356;&#24180;&#12434;&#35373;&#23450;
month <- 6 #&#21462;&#24471;&#12375;&#12383;&#12356;&#26376;&#12434;&#35373;&#23450;
########

###&#21462;&#24471;&#24180;,&#26376;&#12398;&#12505;&#12463;&#12488;&#12523;&#12434;&#20316;&#25104;#####
StartDate <- as.Date(paste(year, "-", formatC(month, width = 2, flag="0"), "-01", sep = ""))
EndDate <- as.Date(format(as.Date(format(as.Date(paste(year, "-", formatC(month[length(month)],
                                                                          width = 2, flag="0"), "-01", sep = "")),
                                         "%Y%m01"),"%Y%m%d") + 31, "%Y%m01"), "%Y%m%d") - 1
########

###&#24180;,&#26376;,OS,&#12506;&#12540;&#12472;&#12398;&#12497;&#12473;&#12395;&#23550;&#12375;&#12390;&#19968;&#30058;&#26368;&#21021;&#12395;&#12450;&#12463;&#12475;&#12473;&#12375;&#12383;&#22238;&#25968;,&#32207;&#12506;&#12540;&#12472;&#38322;&#35239;&#25968;,&#35370;&#21839;&#32773;&#25968;&#12434;&#21462;&#24471;#####
Dimensions <- c("ga:year", "ga:month", "ga:operatingSystem", "ga:landingPagePath")
Metrics <- c("ga:entrances" ,"ga:pageviews", "ga:users")

#&#21462;&#24471;&#12497;&#12521;&#12513;&#12540;&#12479;&#12398;&#35373;&#23450;
query.list <- Init(start.date = as.character(StartDate),
                   end.date = as.character(EndDate),
                   dimensions = Dimensions,
                   metrics = Metrics,
                   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;
AccessData <- GetReportData(query, oauth_token)

#&#20197;&#19979;&#12363;&#12425;"RGA"&#12497;&#12483;&#12465;&#12540;&#12472;&#12391;&#21462;&#24471;&#12487;&#12540;&#12479;&#12398;&#21033;&#29992;&#12364;&#21487;&#33021;
#&#12487;&#12540;&#12479;&#12398;&#21462;&#24471;&#12467;&#12510;&#12531;&#12489;&#12399;&#26368;&#19979;&#37096;&#12434;&#21442;&#29031;
#pageViews&#12363;&#12425;entrances&#12434;&#24341;&#12367;
AccessData <- cbind(AccessData, AccessData[, 6]-AccessData[, 5])

#&#12487;&#12540;&#12479;&#12398;&#20006;&#12403;&#26367;&#12360;
SubMasterData <- AccessData[order(AccessData[, 5], decreasing = TRUE),]

#&#25551;&#20889;&#12487;&#12540;&#12479;&#12398;&#36984;&#25246;
#pageViews-entrances&#12434;&#36984;&#25246;
DrowData <- SubMasterData[, c(3, 4, 8)]

#&#12487;&#12540;&#12479;&#12398;&#25972;&#24418;
heatmapData <- reshape(DrowData, idvar = colnames(DrowData[2]),
                       timevar = colnames(DrowData[1]), direction = "wide")

#&#34892;&#21517;&#12398;&#35373;&#23450;
row.names(heatmapData) <- heatmapData[, 1]

#&#12521;&#12531;&#12487;&#12451;&#12531;&#12464;&#12497;&#12473;&#21015;&#12434;&#21066;&#38500;
heatmapData <- as.matrix(heatmapData[, -1])

#&#21015;&#21517;&#12395;OS&#21517;&#12434;&#35373;&#23450;
colnames(heatmapData) <- t(as.data.frame(strsplit(colnames(heatmapData), "\\.")))[,2]

#&#12498;&#12540;&#12488;&#12510;&#12483;&#12503;&#12398;&#25551;&#20889;
d3heatmap(heatmapData, dendrogram = "none", cexRow = 0.7, main = "test", scale = "col",
          colors = colorRampPalette(c("#01DF74", "lightgray", "red"))(30))

#&#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 ="")))
SaveData <- as.data.frame(cbind(PagePath = row.names(heatmapData), heatmapData))
WriteXLS("SaveData", paste(year, "&#24180;", head(month, 1), "-", tail(month, 1), "&#20351;&#29992;&#29872;&#22659;&#12392;&#12506;&#12540;&#12472;&#36983;&#31227;&#12398;&#12487;&#12540;&#12479;.xlsx", sep = ""))
########

####&#20197;&#19979;&#12289;RGA&#12497;&#12483;&#12465;&#12540;&#12472;&#12391;&#12398;&#12487;&#12540;&#12479;&#21462;&#24471;#####
#&#12497;&#12483;&#12465;&#12540;&#12472;&#12398;&#35501;&#12415;&#36796;&#12415;
library("RGA")
#&#12522;&#12463;&#12456;&#12473;&#12488;&#12398;&#35377;&#21487;&#12434;&#30003;&#35531;
#google&#12450;&#12459;&#12454;&#12531;&#12488;&#12395;&#12525;&#12464;&#12452;&#12531;&#12375;&#12383;&#29366;&#27841;&#12391;&#23455;&#34892;:authorize&#12467;&#12510;&#12531;&#12489;
authorize()
#&#12487;&#12540;&#12479;&#12398;&#21462;&#24471;
AccessData <- get_ga(profile.id = TableID, start.date = as.character(StartDate), end.date = as.character(EndDate),
                     metrics = Metrics, dimensions = Dimensions)

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

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