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

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

Для связи: @AlexeySeleznev
Реклама: http://bit.ly/39MwJCY
Download Telegram
​​Исследование оттока сотрудников департамента исследований и разработок

Автор: Маматкулов Отабек

Я выбрал именно эту тему исходя из важности и высокой стоимости найма новых сотрудников, которые обычно начинают числиться в штабе компании в результате прохождегия различных стадий отбора - то есть наем нового сотрудника не является случайным, и может быть изучен более очевидными подходами, чем поведение клиентов. В отличие от уходящих клиентов, покидающий компанию сотрудник приносит больше убытков, так как привлекать новых сотрудников дороже из-за издержек на хантинг и последующее обучение. Аналогично и со стороны прибыли - новый сотрудник обычно приносит больше прибыли, чем сотни новых клиентов. Кроме этого, в компаниях есть различные департаменты со совей спецификой, и исследовать их стоит по-отдельности.

В данном проекте я планирую выявить одну из значимых зон уязвимости удержания сотрудников компании, чтобы предложить своё решение по удержжанию сотрудников направления “R&D” для компании, специализирующейся именно в этом направлении. Я подозреваю, что компаниия около-фармацевтическая, но на анализе это не отражается. Более подробную информацию предоставлю в следующих частях работы.

Содержание:
- Задача
- Анализ
- Данные и логика анализа
- Модель
- Симуляция
- Дэшборд
- Общие выводы

#статьи_по_R
👍9🔥1
Видео урок "Авторизация в Google Ads API и запрос иерархии аккаунтов"

Друзья, 27 апреля прекращается поддержка Google AdWords API, с которым работает устаревший пакет RAdwords. В связи с чем, я начал работу над серией видео уроков по работе с более новым пакетом rgoogleads, который работает с Google Ads API.

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

Тайм коды:
00:00 Вступление
00:57 Варианты авторизации в пакете rgoogleads
02:33 Пример авторизации в Google Ads API с использованием параметров по умолчанию
03:57 Какие учётные данные необходимо создать, для авторизации в Google Ads API
04:43 Как создать управляющий аккаунт Google Ads и запросить токен разработчика
08:55 Как создать и настроить проект в Google Cloud для работы с Google Ads API
13:00 Настройка конфигурации авторизации в пакете rgoogleads
18:56 Переменные среды в пакете rgoogleads
20:33 Опции пакета rgoogleads
21:49 Работа с иерархией аккаунтов в Google Ads API
26:19 Заключение

Смотрите также:
- Опубликовано видео моего доклада "Зачем интернет маркетологу понимать что такое API. Разбираем устройство API Google Ads", с которым я выступал летом на 8P.
- Миграция с Google AdWords API на Google Ads API: подробный мануал

#видео_уроки_по_R
👍8🔥2
​​Как расположить несколько ggplot2 графиков на одном изображении

Для расположения сразу нескольких графиков на одном изображении удобно использовать пакет patchwork. patchwork по сути решает туже проблему, что и gridExtra::grid.arrange() и cowplot::plot_grid(), но имеет более простой синтаксис.

Рассмотрим несколько примеров:
  
library(ggplot2)
library(patchwork)

# создаём 2 графика
p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))

# располагаем их на одном изображении
p1 + p2

Пример более сложного макета, в котором 3 графика будут располагаться в верхней части изображения, и один в нижней.
 
p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) + geom_bar(aes(carb))

(p1 | p2 | p3) /
p4

Так же управлять макетом изображения вам позволяет функция plot_layout():
 
p1 + p2 + p3 + p4 +
plot_layout(ncol = 3)

Аргументы функции plot_layout():
ncol, nrow - Размеры создаваемой сетки, если оба равны NULL, для установки размеров будет использоваться та же логика, что и при использовании facet_wrap().
● byrow - Аналогично byrow в matrix(). При значении FALSE, графики будут заполнены по столбцам.
● widths, heights - Относительная ширина и высота каждого столбца и строки в сетке. Будет повторяться, чтобы соответствовать размерам сетки.
● guides - Позволяет расположение общей легенды объединяемых графиов, принимает одно из следующих значений: 'collect', 'keep', 'auto'
● tag_level - Автопометка графиков, принимает одно из следующих значений: 'keep', 'new'
● design - Спецификация расположения областей графиков на макете.

Пример работы с аргументом design
 
p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))
p3 <- ggplot(mtcars) + geom_bar(aes(gear)) + facet_wrap(~cyl)
p4 <- ggplot(mtcars) + geom_bar(aes(carb))
p5 <- ggplot(mtcars) + geom_violin(aes(cyl, mpg, group = cyl))

# пример 1
design <- c(
area(1, 1, 2),
area(1, 2, 1, 3),
area(2, 3, 3),
area(3, 1, 3, 2),
area(2, 2)
)

p1 + p2 + p3 + p4 + p5 + plot_layout(design = design)

# пример 2
design <- "
122
153
443
"
p1 + p2 + p3 + p4 + p5 + plot_layout(design = design)

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

Ссылки:
- сайт пакета patchwork

#заметки_по_R
👍111🔥1
​​Как создать кластеризированную таблицу в Google BigQuery с помощью R

Кластеризированная таблица в Google BigQuery, это таблица, которая физически разбита на блоки, по значениям одного или нескольких столбцов.

Зачем кластеризировать таблицу в BigQUery

По смыслу процесс кластеризации очень похож на индексирование таблиц, т.е. вы упорядочиваете данные по значению столбцов, за счёт чего значительно увеличиваете скорость выполнения запросов.

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

Как создать кластеризированную таблицу с помощью bigrquery

Синтаксис не особо очевидный, поэтому я и решил написать этот пост. Ниже пример создания простейшей кластеризированной таблицы:
 
library(bigrquery)
library(magrittr)

bq_auth(email = 'me@gmail.com')

ds <- bq_dataset(project = "my_proj", dataset = 'my_ds')

# тестовые данные
df <- data.frame(
gr = c('a', 'a', 'a', 'b', 'b'),
val = c(3, 5, 1, 3,4)
)

# создаём кластеризированную таблицу
bq_mtcars <- bq_table_create(
bq_table(ds, 'cluster_tbl'),
clustering = list(fields = "gr"),
fields = as_bq_fields(df)
)

# записываем данные
bq_table(project = "my_proj",
dataset = "my_ds",
table = "cluster_tbl") %>%
bq_table_upload(
values = df,
write_disposition = "WRITE_APPEND"
)

# запрашиваем данные
sql <- "SELECT * FROM my_ds.cluster_tbl WHERE gr = 'b'"
bq_df <- bq_project_query('choice31', sql) %>%
bq_table_download()


Т.е. для создания кластеризированной таблицы необходимо:

1. Использовать аргумент clustering передав в него список столбцов для кластеризации.
2. Передать в аргумент fields структуру будущей таблицы с помощью as_bq_fields(df).

Как правильно запрашивать данные из кластеризированной таблицы

Вы можете запрашивать данные из кластеризированной таблицы также, как и из обычной. Но для того, что бы получить эффект от кластеризации соблюдайте следующие правила:

● Кластеризация работает при фильтрации данных в блоке WHERE, и агрегации данных используя блок GROUP BY.
● Соблюдайте порядок обращения к столбцам, такой же как указывали при кластеризации.
● Нельзя использовать в выражении фильтрации кластеризированное поле, с каким либо другим полем.
● Используйте только простейшие выражения, например нельзя использовать при фильтрации по кластерному полю функции его преобразования.

Ссылки:
- Introduction to clustered tables
- Creating and using clustered tables
- Querying clustered tables

#заметки_по_R
🔥4👍3
​​Попался на глаза в открытом доступе в виде статьи на хабре перевод первой главы книги "Hands-On Programming With R" Гарретта Гроулмунда в соавторстве с Хедли Викхемом.

Не бойтесь программировать! Любой может научиться программировать при правильной мотивации, а эта книга организована таким образом, чтобы поддерживать вас мотивированным. Это не справочник; это книга о трёх проблемах. Книга проведёт вас через увлекательные основы языка R и даже позволит заглянуть на следующий уровень сложности. Настоящие задачи являются лучшим способом обучения, потому что вы не запоминаете функции вне контекста, вы изучаете их для решения проблем из реального мира. Вы будете обучаться выполняя задания.

В статье опубликован перевод не всей книги, тем не менее довольно большая её часть.

#книги_по_R
👍182🔥1
Видео урок: "Запрос отчётов из Google Ads API в R с помощью пакета rgoogleads"

Ранее я уже неоднократно говорил о том, что 27 апреля будет прекращена поддержка Google AdWords API, в связи с чем, тем кто запрашивает данные из Google Ads с помощью устаревшего пакета RAdwords необходимо перевести скрипты на новый пакет rgoogleads.

Сегодня я опубликовал второй урок по работе с rgoogleads, в котором подробно разобрал процесс запроса отчётов из Google Ads API.

Время на миграцию у вас ещё есть.

Тайм коды:
00:00 Введение
00:59 Объектная структура Google Ads API
01:42 GAQL запрос
02:29 Основные ресурсы в Google Ads API
03:01 Типы полей в отчётах Google Ads API
04:36 Google Ads Query Builder
10:21 Как выполнить GAQL запрос, и получить его результат в R
12:17 Метаданные и информация о ресурсах
15:54 Аргументы функции adsgetreport()
22:11 Запрос отчётов из Google Ads API в многопоточном режиме
25:01 Запросы объектов рекламного кабинета Google Ads: рекламных кампаний, групп объявлений, объявлений и ключевых слов
26:40 Заключение

—————————————
К тому же вчера я опубликовал новую версию rgoogleads 0.6.0, установить которую уже можно из CRAN.

Что нового:
● В функцию gads_get_report() добавлен аргумент gaql_query, который позволяет передать функции готовый текст запроса, скопированный из QueryBuilder.
● Новая функция gads_get_keywords() для запроса списка ключевых слов.

Смотрите также:
- Видео урок по авторизации в Google Ads API
- Статья о миграции с Google AdWords API на Google Ads API

#видео_уроки_по_R
#новости_и_релизы_R
👍10
$41 000 профита на оффере по микрозаймам с PPC.

Сейчас у всех на слуху криптовалютные офферы и фокус внимания отошел от не менее интересного направления — микрокредитования.

Под микрокредиты подходят все источники трафика: PPC, SEO, email-рассылки. Т.к. в PPC-рекламе проще доставать большие объемы трафика - сконцентрируемся на ней по примеру недавнего кейса.

Период слива: 01.2022 — 04.2022
ГЕО: США
Партнерка: LeadsMarket
Источник: PPC
Оффер: Personal Loans
Потрачено: $149 000
Получено: $190 250
Профит: $41 250
ROI: около 25%

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

ШАГ 1: Подбор и анализ ключевых запросов
Все, кто работают с PPC и SEO, знают про AhRefs и SimilarWeb. Чтобы получить больше данных, использовали оба сервиса одновременно. Базовые ключи: «cash loans», «quick loans».

ШАГ 2: Подготовка рекламных креативов
На креативы хорошо заходят люди с позитивными эмоциями, деньги. На США круто поднимут конверсию креативы с семейными парами разных рас. Дальше - текст по ключевому запросу, например:

● «loans for rent» — Rent Due? Loans Fast as 24hrs;
● «loans for bad credit» — $500-$5 000 Loan. Bad Credit OK.

ШАГ 3: Аналитика и оптимизация рекламных кампаний
Примерно раз в неделю лучше менять рекламные креативы и тестировать киворды.

Итоги
За 4 месяца благодаря оптимизации кампаний: смена креативов, апдейт кивордов, получился ROI 25%. Результат очень хороший, чистый профит свыше $41 000 порадовал.
💩8👍3🤔1
​​Расширяя границы или о задаче проверки гипотезы о нормальности многомерного распределения

Путеводитель по пакету MVN, посвященному проверке гипотезы о нормальности многомерного распределения.

Допустим, у нас есть некоторое совместное распределение n переменных – и нам необходимо проверить, является ли оно нормальным. Решить эту задачу просто нам мешает один маленький факт – из нормальности многомерного распределения следует нормальность распределения каждой переменной в отдельности, но в обратную сторону это работает только при случае независимости компонентов распределения, что на практике не выполняется почти никогда. Поэтому приходится что-то изобретать.

Содержание:
● Минутка теории
● Методология
● Расчеты и описание

#статьи_по_R
👍6
Добро пожаловать в мир главного ит тренда - машинного обучения: @machinelearning_ru

В канале вы найдете :
📃 Статьи ,
📚 Книги
👨‍💻 Код
🔗 Ссылки
🦾 Вакансии


и много другой полезной информации
#ArtificialIntelligence #DeepLearning
#MachineLearning #DataScience
#Python

1 канал вместо тысячи учебников и курсов 👇👇👇

🤖 @machinelearning_ru
👍6
​​«ІТ зараз – це одна зі сфер української економіки, здатна привести у країну валюту та сплатити податки у нашій державі»

Кожен українець розуміє це, тому починає шукати віддалену IT професію.

Wezom Academy https://wezom.academy/ua/ пропонує - IT курси для українців:
- Онлайн навчання SMM, SEO та Copywriting - нова професія за 2 тижні!
- Професія «FrontEnd-розробника» та Junior верстальника на новому курсі 2022 року!
- Курси з веб-дизайну

- Курси з PHP, Python, HTML5 + CSS3 + JS!

Отримуючи будь-яку IT-освіту в Україні зараз, ви одночасно підтримуєте економіку та готуєте собі ґрунт для перспективної роботи надалі.

З вірою в якнайшвидшу перемогу,

команда Wezom Академії

з тимчасово окупованого Херсона
🤮12👍102
​​Видео урок и практическое занятие "Построение веб-приложений с помощью Shiny"

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

Содержание урока:
● Shiny
● Шаблон приложения Shiny
● Добавление и форматирование текста
● HTML Builder Functions;
● концепция макетов
● inputs
● outputs
● server
● реактивное программирование в Shiny
● базовые и дополнительные input

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

Смотрите другие посты оп теме:
- впечатления о книге “Изучаем Shiny”
- видео урок "Визуализация панельных данных при помощи языка R в Shiny"

#видео_уроки_по_R
👍13🔥3
​​Process Mining c bupaR

В этой статье мы рассмотрим bupaR – open-source пакет для анализа бизнес-процессов на языке R.

bupaR даёт возможность рассмотреть бизнес-процесс под самыми разными углами. В сочетании с простотой освоения, кастомизацией (в частности, в построении карты процесса), широким набором полезных функций, и, конечно, огромными возможностями языка R, ориентированного на анализ данных и работу со статистикой, использование данного пакета видится отличным решением в проекте по анализу бизнес-процессов.

#статьи_по_R
🔥7👍2
​​Подборка пакетов R, которые сделают Вашу жизнь лучше

Статья от ребят из @it_resume

Некоторые из перечисленных ниже пакетов действительно уникальны, а некоторые просто забавны в использовании.

Содержание:
● Полезные и странные
● Визуализация данных
● Очистка и обработка данных
● Исследование и моделирование данных
● Эпилог

#статьи_по_R
👍11
Тем, кто хочет подтянуть скиллы и поработать в группе 🔥

Воркшоп: Google Analytics (universal) - отчеты, брендовые запросы, анализ.

Когда: 30 апреля в 10:00 по Киеву
Продолжительность: 3 часа
Кто: Антон Крохмаль - Team Lead of SEO | Netpeak Agency

Какими инструментами будем пользоваться:
- Google Analytics,
- Google Search Consol,
- Google Таблицы (формулы),
расширение для таблиц (Search Analytics for Sheets)

После воркшопа ты будешь уметь:
- определять количество брендового и небрендового органического трафика на сайт
- рассчитывать ROMI при инвестициях в канал SEO.
- подготавливать отчеты для клиента
- определять что первично, что вторично (на что в первую очередь обращать внимание как специалист при анализе)

Практика будет проходить на базе 2-х реальных клиентов (проектов) Netpeak.

Запись делаться не будет.
Стоимость - 60$
Кол-во мест - 20 участников

По вопросам оплаты и регистрации пишите @markunas в личные сообщения.
4👍4
​​Всё больше хайпа в 2022 году в арбитражном комьюнити получают финансовые офферы. Лить или не лить? Многие считают, что ставка не такая высокая, как, например, в нише гемблинга или крипты.

Держи краткий обзор партнерки LeadsMarket в нише финансов, которая дает доступ всего к трем офферам. Но зато каким! Это не привычные предложения от банков, ориентированные на жителей стран СНГ, а краткосрочное кредитование в гео США.

Особенности партнерки LeadsMarket:
3 финансовых оффера с оплатой по CPA на США;
Высокие ставки — до $240 за лид;
Современные инструменты и функции: конструкторы форм, Mobile 1st, Sub-id трекинг, лендинги, рекламные креативы и т.д.;
Персональный менеджер;
Еженедельные выплаты онлайн - от $100. Все платежи осуществляются без комиссии.

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

Под микрокредиты подходят все источники трафика: SEO, PPC, email-рассылки.

Свяжись с менеджером LeadsMarket чтобы узнать больше.
👍1👎1
​​Курсы по Python? Лучше по R!

Лайтовое, софтскиловое пятничное чтиво.

Автор: Дарья Арцеблюк

В этой статье мы выделили для вас некоторые недостатки и превосходства R и Python в качестве первых языков программирования в карьере data scientist’а. А так же разработчикам, желающим добавить строчку с полезным навыком в резюме, также должно быть довольно интересно.

Содержание:
- Python
- Преимущества Python в Data Science
- Python-инструменты для data scientist
- R
- Преимущества R в Data Science
- R-инструменты для data scientist
- Python vs. R в Data Science: что лучше?

#статьи_по_R
👍13👎1
​​Ты — мобильный разработчик, который сделал своё приложение и хочешь его раскачать. Или у тебя есть друг-стартапер, которому надо помочь с продвижением его детища.

Первая мысль, конечно, потратить кучу денег на таргетированную рекламу. Еще, говорят, работает smm. На самом деле тебе достаточно начать с ASO (англ. app store optimization).

Зачем разработчику разбираться в оптимизации?
1) Ты существенно повысишь профессиональный уровень, ведь получишь возможность самостоятельно продвигать свой pet-проект.
2) Сильно оптимизируешь бюджет на продвижение.

Но эти знания могут перерости в полноценную новую профессию.

ASO — одна из самых молодых сфер в digital мире. Значит, конкуренция на рынке в этой сфере еще не слишком высокая – это уже довольно привлекательно. В Украине Junior-специалисты в сфере ASO зарабатывают в среднем $1000, а более опытные – около $3800.

Профессия ASO полностью зависит от последних трендов в мобильном мире, а также обновлений магазинов Apple и Google. Именно по этой причине, обучаться ASO по книгам, блогам или онлайн-курсам, записанным два года назад – невозможно.

Для всех заинтересованных в онлайн-университете Choice31 by Netpeak Group разработали курс «ASO-специалист».

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

А еще на время курса студенты получают бесплатный PRO-доступ к AppFollow (с дополнительными расширениями только для студентов). Экономия около 1000$ + дополнительные возможности, которых нет у простых пользователей софта.

Прямо сейчас идет набор на новый поток и стоимость курса снижена на 50%. Успей оставить заявку или рассказать об этом знакомому до 20 мая.
👍41
​​R 4.2.0

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

Пользователям Windows, старше чем Windows 10 и Windows Server 2016, для данного релиза необходимо самостоятельно установить Universal C Runtime.

Ссылки:
- Статья о том как обновить R с помощью пакета installr
- Видео урок про обновление R с помощью installr
- Скачать UCRT
- Скачать R 4.2.0. для Windows

#новости_и_релизы_R
👍7
​​Как удалить непечатные символы из файла?

———————————————
Вопрос:

как в текстовом файле удалить одиночные невидимые символы LF, но оставить пары CR LF ?

(пример файла показан на изображении к посту)

Автор вопроса: @pirshtuk
Ссылка на оригинал сообщения.

———————————————
Ответ:

Вот
так работает - gsub("([^\r])\n", "\\1 ", x)

Автор ответа: @Gregory_Demin
Ссылка на оригинал ответа.

#вопрос_ответ
👍7🔥1
​​Финансы — одна из самых прибыльных вертикалей в affiliate-индустрии. Один подтвержденный лид может принести арбитражнику более $1000. Правда полить на свежий оффер — большая удача. LeadsMarket — одно из лучших мест, чтобы начать.

LeadsMarket — партнерская программа, предлагает вебмастерам со всего мира зарабатывать на финансовых CPA офферах США. Средние ставки за лид от $2-$240.

В партнерской программе LeadsMarket представлено 3 вида финансовых офферов:

Personal Loans US — $2-$240.
Personal Loans UK — $1 - $120.
Car Title Loans US — $2-$20.

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

Под микрокредиты подходят все источники трафика: SEO, PPC, email-рассылки.

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

Свяжись с менеджером LeadsMarket чтобы узнать больше.
🤮1
​​Отличная картинка, которая иллюстрирует списки в R, и работу с их элементами.

1. Пример списка. По сути список это контейнер для хранения других объектов, в том числе и других списков. В нашем примере перечница, в которой отдельные элементы - пакетики с перцем, в каждом пакете есть содержимое - перец.

2. Указав индекс необходимого элемента в одинарных квардратных скобках, мы получим на выходе также список, но внутри останется только те его элементы, индексы которых мы перечислили в квадратных скобках.

3. Для извлечения конкретного элемента ИЗ списка необходимо указать его индекс в двойных квадратных скобках. Таким образом мы вытащили пакет с перцем из перечницы.

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

Удобный синтаксис обращения с элементам списка помощью purrr:pluck()

Довольно изящный синтаксис обращения к элементам списка предоставляет функция purrr::pluck().

library(purrr)

# Обращение к элементу списка по индексу:
pluck(x, 1)
x[[1]]

pluck(x, 1, 2)
x[[1]][[2]]

# Смешенное обращение к элементам списка по индексам их именам
pluck(x, 1, 2, "elt")
x[[1]][[2]][["elt"]]


Ссылки:
- изображение и идея заимствованы из твиттера Хедли Викхема.

#заметки_по_R
👍12