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)

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

Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.
タイトルとURLをコピーしました