Skip to content

Instantly share code, notes, and snippets.

@iosiuk
Last active March 18, 2019 00:36
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 iosiuk/7edee93de85027155f9a30a5ace8e036 to your computer and use it in GitHub Desktop.
Save iosiuk/7edee93de85027155f9a30a5ace8e036 to your computer and use it in GitHub Desktop.
cpa_cheating
#install.package("googleAnalyticsR", dependencies = TRUE)
#install.packages("googleAuthR")
library(googleAnalyticsR)#Подключаем библиотеку googleAnalyticsR
library(googleAuthR)#Подключаем библиотеку googleAuthR
ga_auth()
dateFrom <- '2018-03-01' #С какого дня выгружать данные из GA
dateTo <- '2018-03-15' #По какой день выгружать данные из GA
segment_def_for_call <- "users::condition::ga:medium=~cpa" #сегмент пользователей, которые хоть раз были по каналу СРA
seg_obj <- segment_ga4("CPA", segment_id = segment_def_for_call) #задаем сегмент в формат запроса к API
GAData <- google_analytics_4(123456789,
date_range = c(dateFrom,dateTo),
metrics = c("pageviews","sessions"),
dimensions = c("dimension1", "dimension5","sourceMedium", "dimension6","pagePath","dimension3"),
segments = seg_obj,
anti_sample = TRUE) # Запрос к API Google Analytics
GAData <- GAData[order(GAData$dimension1, GAData$dimension6),] #Сортируем данные сначала по ClientID и по HitTimestamp
GAData$timestamp <-substr(GAData$dimension6, 1, 19) #Удаляем из HitTimestamp лишние данные
GAData$timestamp <- gsub("T", " ", GAData$timestamp) # Заменяем "Т" на пробел (нужно для преобразования даты в Timestamp формат)
GAData$timestamp <-as.numeric(as.POSIXct(GAData$timestamp)+7200) #Преобразовываем дату в Timestamp формат и записываем в новую колонку
#install.packages("dplyr")
library(dplyr) #Подключаем библиотеку dplyr для дополнительной обработки дата фрейма
GAData$timeFromLastHit <-GAData$timestamp - lag(GAData$timestamp)#Считаем время с последнего хита и записываем в новую колонку
GAData$timeFromLastHit <- ifelse((GAData$dimension1==lag(GAData$dimension1)), GAData$timeFromLastHit, "0") #Ставим 0 для первого хита пользователя
GAData$lastPagePath <-lag(GAData$pagePath) #
GAData$lastPagePath <- ifelse((GAData$dimension1==lag(GAData$dimension1)), GAData$lastPagePath, "-") #
GAData$sourceLastHit<- lag(GAData$sourceMedium) #Записываем в новую колонку источник предыдущего хита
GAData$sourceLastHit <- ifelse((GAData$dimension1==lag(GAData$dimension1)), GAData$sourceLastHit, "-") #
GAData$NewSession <- ifelse(((GAData$sourceLastHit==GAData$sourceMedium)&(GAData$dimension1==lag(GAData$dimension1))), "No", "Yes") #Записываем в новую колонку признак новой сессии
subGAData <- GAData[!grepl("No", GAData$NewSession),] #Создаем новый датафрейм с хитами, которые спровоцировали новую сессию
subGAData$timeFromLastHit <- as.numeric(as.character(subGAData$timeFromLastHit)) #Конвертируем timeFromLastHit в числовой формат
subGAData <-subset(subGAData, ((timeFromLastHit<60)&(timeFromLastHit>0)&(pagePath==lastPagePath))) #Оставляем в датафрейме только те данные, в которых предыдущая страница равна текущей и время с предыдущего хита < 60
subGAData <- subGAData[,c("dimension1","sourceMedium","dimension6", "pagePath", "dimension3", "timeFromLastHit", "lastPagePath", "sourceLastHit")]
names(subGAData)[1]<-"ClientID" #меняем название колонок
names(subGAData)[3]<-"Hit Timestamp"
names(subGAData)[5]<-"Referrer"
write.csv(subGAData, file = "cpa_cheating.csv") # записываем данные в csv
#install.packages("googlesheets")
library("googlesheets")
gs_upload("cpa_cheating.csv") #записываем данные в гугл таблицу
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment