Digisemestr – workshop – 📈 příležitosti 📈

Máte-li MacOS, tak musíte do hlavičky umístit skript kvůli správnému kódování slov jinak se vám případné znaky s háčky a čárky převedou do divného formátu <U-123>. Nemáte-li MacOS tak to v žádném případě nedělejte.

## Máte-li MacOS
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")

Načtení knihoven:

library(googleAuthR)
library(tidyverse)
library(searchConsoleR)

Přihlášení do GSC:

## Přihlášení do GSC:
scr_auth()

## Výpis webů ve vlastnictví:
list_websites()

Nastavení proměnných:

sc_page = "https://www.zatkovic.cz"
sc_date_from = "2019-09-01"
sc_date_to = "2019-10-31"
sc_rows = 10000

Stažení dat z GSC:

sc_query <- search_analytics(sc_page, 
                            sc_date_from, 
                            sc_date_to, 
                            dimensions = c("query"), 
                            searchType = "web", 
                            rowLimit = sc_rows)

Načtení dat ze souboru:

Potřebujete-li sample data, tak jsou zde.

## Načtení ze souoru:
## (nemáte li vlastní GSC)
## sc_query <- read.csv("sample_query.csv")
## sc_query <- sc_query[,c(-1)]

Lepší čitelnost datasetu:

## Pouze pro data z API
## sc_query$ctr <- round(sc_query$ctr * 100,2)

sc_query$position <- round(sc_query$position, 2)

Rozdělení slov na Brand a NonBrand:

## Brandová slova
brand <- sc_query %>%
  filter(str_detect(query, "Martin|Žatkovič|Zatkovic"))

## NonBrandová slova
non_brand <- sc_query %>%
  filter(!str_detect(query, "Martin|Žatkovič|Zatkovic"))

Rozdělení slov na stránky:

## TOP 3
top_3 <- sc_query %>%
  filter(position <= 3)

## TOP 3 - 10
top_10 <- sc_query %>%
  filter(position >= 4) %>%
  filter(position <= 10)

## Second page
second_page <- sc_query %>%
  filter(position >= 11) %>%
  filter(position <= 20)

Přehled průměrných CTR:

mean(non_brand$ctr)
mean(top_3$ctr)
mean(top_10$ctr)
mean(second_page$ctr)

Slova, která mají smysl:

with_impressions <- non_brand %>%
  filter(impressions >= 25)

Optimalizace CTR:

mean(top_3$ctr)

top_3_bad_ctr <- top_3 %>%
  filter(ctr < mean(top_3$ctr))

top_3_good_ctr <- top_3 %>%
  filter(ctr > mean(top_3$ctr))

Optimalizace CTR – hloupější:

top_3 <- top_3 %>%
  filter(impressions > 10) 

mean(top_3$ctr)

top_3_bad_ctr <- top_3 %>%
  filter(ctr < mean(top_3$ctr))

top_3_good_ctr <- top_3 %>%
  filter(ctr > mean(top_3$ctr))

Tvorba plotů:

## Začištění
non_brand <- non_brand %>%
  filter(impressions > 10) %>%
  filter(clicks > 1)

## Klasický plot (Pozice x CTR)
plot(non_brand$position, non_brand$ctr)

## Trendovost - 1
reg<-lm(position ~ ctr, data = non_brand)
abline(reg, col="blue")

## S využitím funkce predict
x <- non_brand$position
y <- non_brand$ctr
fit <- lm(y~x) 
lines(x,predict(fit,data.frame(x=x)),col="red")

## Klasický plot (Impresse x Pozice)
plot(non_brand$impressions, non_brand$position)