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

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

Для связи: @AlexeySeleznev
Реклама: http://bit.ly/39MwJCY
Download Telegram
Ускоряем dplyr: бекенды dtplyr, dbplyr и multidplyr

dplyr один из наиболее популярных пакетов для языка R, основным преимуществом которого является удобочитаемый и понятный синтаксис.

Из недостатков данного пакета можно отметить, что при работе с данными большого объёма он значительно уступает в скорости вычислений например data.table.

В этом видео мы разберёмся как можно ускорить вычисления на dplyr, за счёт бекендов dtplyr и multidplyr, а так же узнаем о том, как и зачем можно использовать бекенд dbplyr, предназначенный для работы с базами данных с использованием синтаксиса dplyr.

Тайм коды:
00:00 Вступление
00:59 Какие бекенды мы рассмотрим
01:48 Цель dtplyr
02:30 Синтаксис dtplyr
03:33 Пример работы с dtplyr
05:38 Как осуществляется перевод глаголов dplyr в синтаксис data.table
07:51 Функция show_query()
11:27 Почему dtplyr медленнее чем data,table
13:24 Цель dbplyr
13:40 Синтаксис dbplyr
14:37 Пример работы с dbplyr
16:54 Перевод dplyr глаголов в SQL запросы
17:53 Как реализованы подзапросы в dbplyr
18:25 Перевод неизвестных R функций и инфиксных операторов в SQL запрос
19:48 Проброс SQL команд в запросы
20:15 Как происходит перевод функций внутри dplyr глаголов в SQL запросы, функция translate_sql()
21:26 Введение в multidplyr
22:17 Варианты применения multidplyr
22:50 Пример работы с multidplyr
28:24 Какой пакет использовать dtplyr или multidplyr
29:27 Заключение

Ссылка на конспект к уроку + видео.

Подписывайтесь также на YouTube канал!

Смотрите другие посты по теме:
- Программирование с dplyr
- Видео курс "Введение в dplyr 1.0.0"

#видео_уроки_по_R
🔥10👍4👏1
​​Визуализируй это: визуализация данных в R

Автор: Балтыжакова Татьяна

Материалы с воркшопа. По сути это шикарная шпаргалка по работе с ggplot2, и построению всех основных типов графиков с его помощью, очень рекомендую закинуть в закладки.

Содержание:
● Основные понятия и философия пакета
● Виды графиков
● Диаграмма рассеяния (scatter plot)
● Пузырьковая диаграмма (bubble plot)
● Столбчатая диаграмма (bar plot)
● Столбчатая диаграмма с накоплением
● Сгруппированная столбчатая диаграмма
● Lolipop chart
● Графики распределения
● Гистограмма (histogram)
● График плотности распределения (density plot)
● Ящик с усами и его вариации
● Линейный график (line graph)
● График области (area graph)
● Потоковый график
● Тепловая карта (heatmap)
● Матрица корреляции

#статьи_по_R
🔥5👍42
​​Вторая лекция бесплатного онлайн курс от ЕУ Спб "Введение в пространственный анализ и моделирование в R"

Друзья, вторая лекция курса пройдёт сегодня 20.05.2022 в 18:00.

Передаю слово организаторам:

На второй встрече мы будем разбираться с основными видами операций с пространственными данными в библиотеке sf и узнаем, как подготавливать геоданные для моделирования.

Спикер: Карен Валитов (преподаватель совместной программы ЕУ СПб и Яндекса ПАНДАН)

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

#курсы_по_R
👍1
​​Основы работы с языком R

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

- Основы языка
- Основные функции
- Типы данных
- Основы рабочего окружения

#видео_уроки_по_R
👍9
​​Видео урок "Рисуем график 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