R4marketing | канал Алексея Селезнёва | Язык R
4.28K subscribers
59 photos
11 files
1.21K links
Автор канала Алексей Селезнёв, украинский аналитик, автор ряда курсов по языку R и пакетов расширяющих его возможности.

В канале публикуются статьи, доклады, новости, уроки и заметки по языку R.

Для связи: @AlexeySeleznev
Реклама: http://bit.ly/39MwJCY
Download Telegram
​​Видео урок "Рисуем график GGPLOT2"

Автор: Илья Быков

40 минутный вводный урок, рассчитан на новичков, которые хотят ознакомится с основами построения визуализации на языке R с помощью пакета ggplot2.

#видео_уроки_по_R
👍7🔥1
​​Курс "Язык R для интернет маркетинга" теперь в открытом доступе

Друзья, одной из целей, которые я преследовал запуская этот канал было продвижение моего курса "Язык для интернет маркетинга".

Курс был записан в 2018 году, и с тех пор продавался на платформе NeedForData. С момента старта продаж курс неоднократно дорабатывался и расширялся, тем не менее частично он утратил актуальность. Но он по прежнему будет полезен веб аналитикам и интернет маркетологам для автоматизации своих рутинных, ежедневных задач с помощью языка R.

За идею записи курса отдельная благодарность Максу Уварову (@Maxim_Uvarov)!

Курс не требует от вас наличия навыков программирования, и рассчитан на новичков.

Из программы курса я ничего не убирал, опубликовал на канале как есть.

————————————————————
Модуль 1. Основы и введение в синтаксис
1. История, возможности, преимущества и недостатки языка R.
2. Загрузка и установка языка R и среды разработки RStudio.
3. Области применения R скриптов в Power BI.
4. Применение пользовательских параметров Power BI в R скриптах
5. Знакомство со средой разработки RStudio.
6. Основные данных в R
7. Работа со строками
8. Чтение csv, json, excel файлов
9. Агрегирующие функции, пакеты data,table и tidyr
10. Манипуляция данными в R с помощью SQL запросов, пакет sqldf
11. Работа с датой и временем в базовом R и с помощью lubridate
12. Работа с периодами с помощью пакета timeperiodsR
13. Условные конструкции, циклы и функции в языке R
14. Обработка ошибок
15. Рекомендации по оформлению кода

Модуль 2. Работа с API рекламных систем
1. Что такое API
2. Насколько безопасно использовать пакеты для работы с API
3. Google AdWords API
4. Яндекс Директ API
5. Facebook Marketing API
6. API Вконтакте
7. MyTarget API
8. Google Analytics API (пакет RGA)
9. Google Analytics API (пакет googleAnalyticsR)
10. API Яндекс Метрики
11. Google Search Console API
12. Google Trends API
13. YouTube API
14. Парсинг сайтов (веб скрепинг)
15. Отправка HTTP запросов

Модуль 3. Работа с собранными данными
1. Google Spreadsheets API
2. Визуализация с помощью ggplot2
3. Работа с базами данных
4. Рассылка почты с помощью mailR
5. Настройка расписания запуска R скриптов
6. Разработка telegram ботов

————————————————————
Ссылки:
Плейлист со всеми видео уроками
Конспект + видео уроки + материалы (требуется регистрация, бесплатная)
Репозиторий с материалами

#курсы_по_R
👍38🔥311
​​Курс "Введение в пространственный анализ и моделирование в R" от ЕУ Спб. Запись второй лекции и анонс третей.

Запись прошлой лекции "Пространственные операции, применяемые при подготовки данных для анализа", вместе с конспектом доступна по ссылке.

План второй лекции:

1. Работа с геометриями
2. Система координат для городов
3. Геометрические операции
4. Пространственные операции
5. Пространственные соотношения
6. Пространственные преобразования
7. Сетки и симуляция карт плотности показателя

———————————
Анонс третей лекции:

В эту субботу мы продолжим разбираться с этой темой и наконец-то перейдём к различным пространственным моделям. Аспирант ЕУ СПб Павел Сивохин расскажет о таких моделях как spatial autocorrelation, spatial lag model, spatial error model и, если будет хватать времени, spatial random forest.

Митап будет оффлайн с онлайн трансляцией (но лучше приходить очно, если вы можете).

Шпалерная 1 (здание ЕУСПб), 212 аудитория.
28 мая в 18:00
Ссылка на трансляции:
https://us02web.zoom.us/j/81529793127?pwd=_IYNX_DE1sXF3keQ0HKpIhZt_H0XU8.1

Смотрите так же:
- Анонс курса "Введение в пространственный анализ и моделирование в R"
- Запись первой лекции

#курсы_по_R
👍15
​​Вакансия "Senior Web & Data Analyst" в Netpeak Group

Формат работы: Удалёнка

Друзья, не смотря на сложное время в данный момент одна из компаний Netpeak Group, холдинг в котором я работаю с 2014 года, находится в поисках аналитика. В данном случае речь идёт о продуктовой компании Netpeak Software, которая поддерживает и продвигает такие SEO продукты как Netpeak Spider (для поиска SEO-ошибок на сайте) и Netpeak Checker (для сбора данных с топовых SEO-сервисов и результатов поисковой выдачи).

Требования:
1. Уверенные знания SQL.
2. Глубокое понимание монетизации и UX-аналитики.
3. Расширенные навыки работы с Google Analytics API и пользовательскими отчетами.
4. Опыт внедрения системы сбора данных через GTM в Google Analytics.
5. Базовые знания HTML, CSS, JS/jQuery.
6. Понимание маркетинговой атрибуции и опыт работы с данными для маркетинговых команд.
7. Опыт работы с веб-аналитикой и отслеживанием событий через Google Tag Manager.
8. Опыт настройки и сбора инсайдов с A/B тестов.
9. Организованность и способность выполнять практическую работу и анализ с минимальным контролем и хорошо работать с персоналом любого уровня.

По всем вопросам можно обращаться к @ab_beast.

Подробно ознакомится с вакансией, и заполнить анкету можно по ссылке.

#вакансия
👍32
​​Воссоздаём табло результатов Евровидения 2022 с помощью ggplot2

Georgios Karamanis воссоздал практически точную копию табло Евровидения 2022 в рамках TidyTuesday.

Ниже краткое пошаговое описание того, как он это сделал от первого лица.

1. Расставить позиции, флаги, названия стран и очки было довольно просто. Я использовал ggimage для флагов после получения кодов iso2c из названий стран с помощью countrycode.

2. Для заполнения полосы позади каждой страны градиентной заливкой был создан прямоугольник с помощью grid, функция linearGradient() была использована для заливки. Затем с помощью функцию geom_grob() из ggpp был изменён размер прямоугольников.

3. Подсветка фона была сделана с помощью круга, на этот раз заполненного с помощью radiusGradient(). Я снова использовал функцию geom_grob(), чтобы поместить их в две разные позиции с разными размерами.

4. Последнее, что я хотел исправить, это флаги Швейцарии и Бельгии, выбивающиеся из фоновых полос. Я думал изменить соотношение сторон или размер этих двух флагов в geom_image(), но это либо исказило бы их, либо сделало бы их слишком маленькими. Поэтому я решил замаскировать флаги. Используя для этого with_mask() из ggfx.

Результат работы вы видите на изображении к этому посту.

Ссылки:
- Код для построение табло на GitHub.
- Репозиторий с кодом и изображением
- Статья на блоге автора с пошаговым описание (использовалось в посте)
- Ссылка на твит автора, так же с пошаговым описанием построения.
- Описание задания TidyTuesday

#заметки_по_R
🔥7👍1
​​Решение конфликта имён функций между пакетами

Не редко вы можете столкнуться с ситуацией, когда в используемых вами пакетах присутствуют функции с одинаковым именем. При подключении пакетов, по умолчанию R отдаёт преимущество функции, экспортируемой из пакета, который был подключён последним. Например если вы подключили два пакета, сначала pack1, потом pack2, и в обоих присутствует функция fun(), то в ходе сеанса fun() будет использовать из pack2, т.к. он был подключён последним.

Такое поведение логично, но не всегда удобно. поэтому есть несколько способов управлять политикой приоритетности функций между пакетами, сейчас мы рассмотрим несколько таких вариантов.

Пакет conflicted позволяет установить приоритет с помощью функции conflict_prefer():
 
library(conflicted)
library(dplyr)
conflict_prefer("filter", "dplyr")


Посмотреть существующие конфликты текущей сессии можно так:
 
conflict_scout()
#> 2 conflicts:
#> * `filter`: [dplyr]
#> * `lag` : dplyr, stats


Более гибкую возможность управления конфликтами предоставляет пакет modules, он создаёт отдельное окружение под каждый пакет, этот подход очень похож на то, как происходит импорт пакетов в python:
 
dplyr <- modules::import_package('dplyr')
dplyr$filter(mtcars, cyl == 8)


Пакет import ожидает, что вы явно присвоите новые имена конфликтным функциям:
 
import::from(dplyr, select, arrange, dplyr_filter = filter)
dplyr_filter(mtcars, cyl == 8)


В базовом синтаксисе для управление приоритетами можно использовать опцию conflicts.policy или функцию conflictRules():
 
options(conflicts.policy =
list(error = TRUE,
generics.ok = TRUE,
can.mask = c("base", "methods", "utils",
"grDevices", "graphics",
"stats"),
depends.ok = TRUE))


Где:
error - Если TRUE, то конфликты приводят к ошибкам;
generics.ok - Если установлено, то определяет, считается ли маскирование обобщённых (дженерик) функций S4 конфликтом. По умолчанию - FALSE, строгая проверка - TRUE;
can.mask - Вектор имен пакетов, которые разрешено маскировать без возникновения ошибки;
depends.ok - Если TRUE, то разрешить все конфликты, возникающие при загрузке пакета;
warn - Устанавливает значение по умолчанию для аргумента warn.conflicts в library() и require().

#заметки_по_R
👍8🔥2
​​Бесплатный матер-класс "Автоматизация создания отчётов в R"

Спикер: Кораблин Александр Игоревич

Дата и время: 09.06.2022 (18:30 — 19:15) онлайн

С чем вы познакомитесь
На мастер-классе вы разберете на конкретном примере, как автоматизировать создание отчетов в R. Преподаватель покажет несколько способов создания отчетов.

Почему это важно?
Язык программирования R - популярный скриптовый язык программирования, который стал мощным инструментом статистического анализа данных. С его помощью можно выполнять визуализацию данных и результатов анализа, генерировать отчёты.

Ссылки:
- Записаться на вебинар
- Информация о вебинаре

#вебинары_по_R
👍7🔥3
​​Рекомендательная система комиксов на R

Автор: Пономарев Павел-Рафаэль

Цели и Задачи:
Цель проекта - создать рекомендательную систему для комиксов, которая бы предсказывала, какие книги будут интересны пользователю, имея информацию о книгах, которые он предпочитает. Оценка качества модели будет основана на внутренней пользовательской оценке и проверке на адекватность модели.

План проекта:
- Текстовый анализ описания книг и рецензий на них
- Построение рекомендательной системы на основе коллаборативной фильтрации
- Оценка качества построения первой модели
- Построение рекомендательной системы на основе содержательной оценки книг
- Оценка качества построения второй модели
- Проверка моделей на основе внешних сценариев
- Общие выводы
- Ответы на вопросы

#статьи_по_R
👍9🔥2👏1
​​Видео третей лекции, и анонс четвёртой лекции курса "Введение в пространственный анализ и моделирование в R" от ЕУ Спб.

Видео третей лекции
Предыдущая, третья лекция была посвящена подготовке к пространственному моделированию, пространственной автокорреляции и тесту Морана.

Конспект и видео этой лекции уже доступны по ссылке.

Анонс четвёртой лекции
В
эту субботу преподаватель Факультета городского и регионального развития ВШЭ Егор Котов продолжит тему моделирования с темами spatial lag/autoregressive model, spatial error model и расскажет про пакеты spdep, spatialreg, rgeoda.

Митап будет только онлайн!
4 июня в 18:00
Ссылка на трансляции: https://us02web.zoom.us/j/81529793127?pwd=_IYNX_DE1sXF3keQ0HKpIhZt_H0XU8.1

Смотрите так же:
- Анонс и программа курса "Введение в пространственный анализ и моделирование в R"
- Конспект и видео первой лекции
- Конспект и видео второй лекции
- Ссылка на трансляцию четвёртой лекции

#курсы_по_R
👍4
​​Визуализация: 100 дней войны

Визуализацию прислал один из подписчиков канала.
 
library(calendR)
library(tidyverse)
# Data
data <- c(55:154)
weekdays_lbls <- c("Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс")
calendR(year = 2022, title = "100 days of war", text.size = 10,
day.size = 3, weeknames = weekdays_lbls,
lty = 0, papersize = "A5", font.family = "Open Sans",
days.col = "gray90",
title.size = 28, title.col = "red",
text.col = "gray90",
special.days = data,
special.col = "black",
orientation = "portrait")
ggsave("100days.png", dpi = 150, width = 7, height = 9)

#заметки_по_R
😢21🤮31
​​Видео урок "Работа с пространственными объектами с помощью пакета sp"

sp - сокращение от Spatial Poligons (пространственные полигоны), данный пакет предоставляет методы для манипулирования пространственными данными.

Автор: Артём Голубничий

Ссылки:
- видео лекция
- практика

Смотрите так же:
- Работа с картами с помощью пакета tmap
- Учебник "Пространственная статистика и моделирование на языке R"

#видео_уроки_по_R
👍5
​​Валидация данных в R

Для валидации, т.е. проверки корректности данных в R удобно использовать пакет data.validator.

Функции реализующие валидацию данных:

validate_if()
validate_cols()
validate_rows()

Цикл проверки:

1. Создаёте объект отчёта функцией data_validation_report()
2. Загрузите набор данных, который необходимо валидировать.
3. Инициируйте процесс валидации:
3.1. Запустите конвейер проверки, начиная с функции validate().
3.2. Используйте функции validate_*() и предикаты для проверки данных. Вы можете создавать собственные предикаты. См. пример в примере ниже функцию between().
3.3. Добавьте результаты проверки в отчет с помощью add_results().
4. Выведите результат проверки в консоль через print(), или создайте отчет в формате HTML используя save_report().

Пример:
 
library(assertr)
library(magrittr)
library(data.validator)

report <- data_validation_report()

validate(mtcars, name = "Проверяем таблицу mtcars") %>%
validate_if(drat < 0, description = "Столбец drat содержит только положительные значения") %>%
validate_cols(in_set(c(0, 2)), vs, am, description = "Значения столбцов vs и am равны только 0 или 2") %>%
validate_cols(within_n_sds(1), mpg, description = "Столбец mpg в прделах 1го стандартного отклонения") %>%
validate_rows(num_row_NAs, within_bounds(0, 2), vs, am, mpg, description = "Количество пропущенных значений в строках не превышает 2") %>%
validate_rows(maha_dist, within_n_mads(10), everything(), description = "Расстояние Махаланобиса не превышает 10 медианных абсолютных отклонений") %>%
add_results(report)

between <- function(a, b) {
function(x) { a <= x && x <= b }
}

validate(iris, name = "Проверяем набор данных iris") %>%
validate_if(Sepal.Length > 0, description = "Значения столбца Sepal length положительные") %>%
validate_cols(between(0, 4), Sepal.Width, description = "Значения столбца Sepal находятся в диапазоне от 0 до 4") %>%
add_results(report)

# выводим результат в консоль
print(report)

# Создаём HTML отчёт
save_report(report, success = FALSE)
browseURL("validation_report.html")


Большинство проверок в приведённом примере реализованы на базе пакета assertr, о котором мы тоже поговорим более подробно немного позже.

Смотрите также:
- Пакет framecleaner является обёрткой над dplyr::mutate(), и предоставляет несколько функций для краткого решения общих проблем, возникающих при приведении в порядок небольших и средних наборов данных

#заметки_по_R
👍8
​​Курс Основы языка программирования R

Автор: Артём Голубничий

1. Знакомство со средой разработки RStudio
2. Основы работы с языком R
3. Базовые типы данных и структуры
4. Векторы
5. Сортировка векторов
6. Арифметика векторов
7. Индекирование векторов
8. Базовая графика
9. Условные выражения
10. Определение функций. Область видимости.
11. Циклы
12. Функционалы
13. Tidyverse. Концепция tidy данных
14. Грамматика данных. Пакет dplyr
15. Tibble
16. Операторы . и do
17. Условные выражения в tydiverse

#курсы_по_R
👍244
​​R + Spotify: изучаем свою активность

Автор: Юрий Тукачев (@psych2016)

Хороший пример построения тепловой карты. Скачать данные по истории прослушивания можно в аккаунте Spotify, в разделе "Privacy settings" > "Download your data". Среди наборов данных будет "Streaming history for the past year".
 
streamHistory <- fromJSON("MyData/StreamingHistory0.json", flatten = TRUE)

#Форматируем дату и добовляем время, день недели
mySpotify <- streamHistory %>%
as_tibble() %>%
mutate_at("endTime", ymd_hm) %>%
mutate_at("endTime", format, tz = "Asia/Yekaterinburg") %>%
mutate_at("endTime", as_datetime) %>%
mutate(date = floor_date(endTime, "day") %>% as_date,
seconds = msPlayed / 1000,
minutes = seconds / 60,
weekday = weekdays(date, abbreviate = TRUE),
hour = hour(endTime))

mySpotify %>%
mutate(weekday = factor(weekday, levels = rev(c("Пн","Вт","Ср","Чт","Пт","Сб","Вс")))) %>%
group_by(weekday, hour) %>%
summarize(minutesListened = sum(minutes)) %>%
ggplot(aes(x = hour, weekday, fill = minutesListened)) +
geom_tile(color = "white", width = 0.98, height = 0.98) +
scale_y_discrete(expand = c(0,0)) +
scale_x_continuous(breaks = seq(0,24,1), expand = c(0,0)) +
scale_fill_gradient("Минут прослушивания", low = "yellow", high = "red") +
labs(x = "Время дня", y = "", caption = "Данные: Spotify Визуализация: Юрий Тукачев") +
ggtitle("Когда я чаще всего слушал музыку на Spotify за последний год?",
"Еженедельная активность прослушивания по часам дня недели") +
guides(fill = guide_colorbar(title.position = 'top', title.hjust = .5,
barwidth = unit(15, 'lines'), barheight = unit(.5, 'lines'))) +
theme(plot.title.position = "plot", text = element_text(size = 14, family = "Roboto Mono"),
plot.caption.position = "plot",
plot.caption = element_text(color = "gray"),
plot.subtitle = element_text(color = "gray"),
legend.position = "top",
panel.background = element_blank(),
plot.margin = margin(25, 25, 10, 25),
axis.ticks = element_blank())

#заметки_по_R
👍14🤮1
​​Обновления пакетов rgoogleads и rfacebookstat

Друзья, подъехали небольшие обновления пакетов для работы с Google Ads API и Facebook Marketing API. Для пользователей данные обновления пройдут практически незаметно, тем не менее рекомендую пакеты обновить, т.к. они были переведены на актуальные версии API.

rgoogleads переведён на работу с Google Ads API v 10.1.0 (не самая последняя версия, но более актуальная, чем та которая была в предыдущей версии пакета)
rfacebookstat переведён на работу с Facebook Marketing API v14.0

Обновление пакетов:
 
install.packages('rgoogleads')
install.packages('rfacebookstat')

Полезные ссылки:
- Плейлист с уроками по работе с rgoogleads
- Плейлист с уроками по работе с rfacebookstat

#новости_и_релизы_R
🔥12👍3
Средняя зарплата Бизнес-Аналитика составляет 1500$-2500$. Тем не менее на рынке сейчас большая нехватка крутых специалистов! Присоединяйся к нам чтобы узнать все про бизнес-анализ!

Здесь вы найдете:
— Переведенные статьи;
— Полезные видео;
— Интересные опросы;
— Профессиональный юмор;

Полезности с канала:
Шпаргалка по SQL
Инструменты для бизнес-анализа
Визуализация данных


Успей залететь в бизнес-анализ, пока это не стало мейнстримом и стань крутым специалистом вместе с нами!😉
Подписаться: @ba_wiki
🔥12👍1👎1
​​Кто за всех решил, что python удобен для «гражданской» аналитики?

Автор: Илья Шутов (@iMissile)

Описание:
Вся аргументация «за питон» строится исключительно по принципу «не думать», «рука рынка, «ну у нас же уже есть в проде 10 строк кода на питоне, что же делать?». Хотя элементарные технологические тесты и оценка экономической эффективности частенько дают неопровержимые доказательства, что DS питон является безответным поглотителем доли ИТ бюджета компаний. Взглянем ниже более пристально на отдельные моменты.

#статьи_по_R
👍17🤔1
⚡️ Аналитика данных - блог ведущего Дата саентиста, работающего в Uber, одного из авторов 🔥 Machine Learning ru. Материал канала поможет реально вырасти до профессионала по работе с данными.

1 канал вместо тысячи учебников и курсов, подписывайтесь: 👇👇👇

🚀 @data_analysis_ml
🔥4