Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@IronistM
Last active December 17, 2015 00:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save IronistM/5521492 to your computer and use it in GitHub Desktop.
Save IronistM/5521492 to your computer and use it in GitHub Desktop.
# Only for the first and test runs!
final_dataset<-NA
j<-1
# In the future we should only get data for increment dates. Don't we?
# get.start.date<-min(final_dataset$date)
# Set up a filters vector to loop over the distinct categories of the blog
filters<-c("ga:pagePath=~^/blog/category/measure/*;ga:pageLoadSample>0","ga:pagePath=~^/blog/category/statistics/*;ga:pageLoadSample>0","ga:pagePath=~^/blog/category/music/*;ga:pageLoadSample>0")
page.group<-c("measure","statistics","music")
# setwd('C:/Users/m.parzakonis/Google Drive/MyCodeRants/GA/data')
for (i in filters) {
speed.df.1 <- ga$getData(id[1],
start.date = "2012-08-01",
end.date = today()-1,
metrics = "ga:pageLoadTime,ga:pageLoadSample,ga:domainLookupTime,ga:pageDownloadTime,ga:redirectionTime,ga:serverConnectionTime,ga:serverResponseTime,ga:speedMetricsSample",
filters = filters[i],
dimensions = "ga:date,ga:isMobile",
max = 1500,
sort = "-ga:pageLoadSample")
speed.df.2 <- ga$getData(id[1],
start.date = "2012-08-01",
end.date = today()-1,
metrics = "ga:domInteractiveTime,ga:domContentLoadedTime,ga:domLatencyMetricsSample,ga:visits,ga:transactions,ga:bounces",
filters = filters[i],
dimensions = "ga:date,ga:isMobile",
max = 1500,
sort = "ga:date")
# Merge files, create metrics
merged.df <- merge(speed.df.1, speed.df.2, all=TRUE)
# head(merged.df) # Yessssss! Only to check that it's OK
merged.df$avgPageLoadTime <- (merged.df$pageLoadTime/merged.df$pageLoadSample)/1000
merged.df$avgDomInteractiveTime <- (merged.df$domInteractiveTime/merged.df$domLatencyMetricsSample)/1000
merged.df$conversionRate <- (merged.df$transactions/merged.df$visits)*100
merged.df$bounceRate <- (merged.df$bounces/merged.df$visits)*100
merged.df$yearmo <- year(merged.df$date)*100 + month(merged.df$date)
# Add another group variable to the data for further analysis
merged.df$avgPLGroup<-cut_interval(merged.df$avgPageLoadTime, length = 4)
merged.df$avgPLGroupNum<-as.numeric(cut_interval(merged.df$avgPageLoadTime, length = 4))
# Should you have more page groups to studt use this varible as an index
merged.df$pageGroup<-rep(page.group[j],nrow(merged.df))
final_dataset = merge(final_dataset,merged.df,all=TRUE)
j<-j+1
}
head(final_dataset)[,1:5]
# date isMobile pageLoadTime pageLoadSample domainLookupTime
# 1 2012-08-01 No 1051584 230 7059
# 2 2012-08-01 No 2375879 431 1890
# 3 2012-08-01 No 3150374 723 1426
# 4 2012-08-01 No 8793485 1663 11901
# 5 2012-08-01 No 10952910 2485 8852
# 6 2012-08-01 No 34297816 7452 67489
@shane760
Copy link

shane760 commented Jun 2, 2015

When I run this code, it says to specify "today" which I do as "05-31-2015" for example. Also, head(final_dataset)[,1:5] has an incorrect # of dimensions, Could you please update to fix?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment