Skip to content

Instantly share code, notes, and snippets.

@iosiuk
Last active September 6, 2019 08:37
cpa_cheating_YM.R
if(!"rym" %in% installed.packages()[,1]){install.packages('rym')}
if(!"getProxy" %in% installed.packages()[,1]){install.packages('getProxy')}
library(rym)
library(getProxy)
my_token <- rym_auth()
dateFrom <- '2018-03-01' #Дата от
dateTo <- '2018-03-15' #Дата до
getProxy(port = "3128", supportsHttps = TRUE, action = "start") # Использование прокси-сервера. Подробнее: https://goo.gl/8jTZJ3
rawmetrikadata <- rym_get_logs(counter = "11111111",
date.from = dateFrom,
date.to = dateTo,
fields = "ym:pv:clientID,ym:pv:dateTime,ym:pv:URL,ym:pv:referer,ym:pv:UTMSource,ym:pv:UTMMedium,",
source = "hits")
getProxy(action = "stop") # Выключение прокси-сервера
rawmetrikadata <- rawmetrikadata[order(rawmetrikadata$ym.pv.clientID, rawmetrikadata$ym.pv.dateTime),] #Сортируем данные сначала по ClientID и по HitTimestamp
rawmetrikadata$timestamp <-as.numeric(as.POSIXct(rawmetrikadata$ym.pv.dateTime)) #Преобразовываем дату в Timestamp формат и записываем в новую колонку
library(dplyr) #Подключаем библиотеку dplyr для дополнительной обработки дата фрейма
rawmetrikadata$timeFromLastHit <-rawmetrikadata$timestamp - lag(rawmetrikadata$timestamp)#Считаем время с последнего хита и записываем в новую колонку
rawmetrikadata$timeFromLastHit <- ifelse((rawmetrikadata$ym.pv.clientID==lag(rawmetrikadata$ym.pv.clientID)), rawmetrikadata$timeFromLastHit, "0") #Ставим 0 для первого хита пользователя
rawmetrikadata$lastPageURL <-lag(rawmetrikadata$ym.pv.URL) # Устанавливаем адрес предыдущей страницы в новую колонку
rawmetrikadata$lastPageURL<-as.character(rawmetrikadata$lastPageURL) # Приводим адрес предыдущей страницы в строковый формат
rawmetrikadata$lastPageURL <- ifelse((rawmetrikadata$ym.pv.clientID==lag(rawmetrikadata$ym.pv.clientID)), rawmetrikadata$lastPageURL, "-") # Ставим "-" для первого хита пользователя
rawmetrikadata$NewSession <- ifelse(((rawmetrikadata$ym.pv.UTMSource=="")&(rawmetrikadata$ym.pv.clientID==lag(rawmetrikadata$ym.pv.clientID))), "No", "Yes") #Записываем в новую колонку признак новой сессии
subrawmetrikadata <- rawmetrikadata[!grepl("No", rawmetrikadata$NewSession),] #Создаем новый датафрейм с хитами, которые спровоцировали новую сессию
subrawmetrikadata$timeFromLastHit <- as.numeric(as.character(subrawmetrikadata$timeFromLastHit)) #Конвертируем timeFromLastHit в числовой формат
subrawmetrikadata <-subset(subrawmetrikadata, ((timeFromLastHit<60)&(timeFromLastHit>0)&(ym.pv.URL==lastPageURL))) #Оставляем в датафрейме только те данные, в которых предыдущая страница равна текущей и время с предыдущего хита < 60
subrawmetrikadata <- subrawmetrikadata[,c("ym.pv.clientID","ym.pv.UTMSource","ym.pv.UTMMedium","ym.pv.dateTime", "ym.pv.URL", "ym.pv.referer", "timeFromLastHit", "lastPageURL")]
write.csv(subrawmetrikadata, 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