Обложка канала

R4marketing | канал Алексея Селезнёва | Язык R. Страница 19

Автор канала Алексей Селезнёв, руководитель отдела аналитики в Netpeak, автор R пакетов: ryandexdirect, rfacebookstat и др. В канале публикуются статьи, доклады, новости, заметки по языку R.

  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Множественное присваивание в R Множественное присваивание горячо любимо пользователями Python, оно даёт возможность присвоить одновременно значения сразу нескольким объектам. Этот приём в Python используется например для обмена значений между двумя переменными, не используя при этом третью, временную переменную. Множественное присваивание также иногда называют распаковочным, параллельным или деструктирующим. В базовом R аналога этой операции нет, но как мы помним, в R на любой чих есть готовый пакет, для множественного присваивания можно использовать оператор %<-% из пакета zeallot. Ниже несколько примеров его использования:
    # распаковываем список или вектор
    c(lat, lng) %<-% list(38.061944, -122.643889)
    c(lat, lng) %<-% c(38.061944, -122.643889)
    
    # распаковываем результат выполнения функции
    c(min_wt, q1_wt, med_wt, mean_wt, q3_wt, max_wt) %<-% summary(mtcars$wt)
    
    # ещё один пример распаковки функции
    coords_list <- function() {
      list(38.061944, -122.643889)
    }
    
    c(lat, lng) %<-% coords_list()
    
    # используем в паре с lapply
    quartet <- lapply(1:4, function(i) anscombe[, c(i, i + 4)])
    c(an1, an2, an3, an4) %<-% lapply(quartet, head, n = 3)
    
    # распаковка вложенных списков
    c(a, c(b, d), e) %<-% list("begin", list("middle1", "middle2"), "end")
    
    # распаковка даты
    c(y, m, d) %<-% Sys.Date()
    
    # меняем местами значения 
    # без использования временной переменной
    c(first, last) %<-% c("Ai", "Genly")
    c(first, last) %<-% c(last, first)
    Ссылки: - все примеры кода подсмотрены в виньетке "Unpacking Assignment". #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Пакет для работы с API ActiveCampaign Пакет, который я опубликовал в CRAN ещё в сентябре, но как то не доходили руки рассказать о нём в канале. ractivecampaign - пакет для работы с ActiveCampaign, достаточно популярной CRM системой. Пакет разработал под одну из своих задач, но насколько я понял ActiveCampaign достаточно популярная CRM, поэтому пригодится может многим. Функции ractivecampaign: ● ac_auth() - Авторизация ● ac_get_accounts() - Список доступных аккаунтов ● ac_get_custom_account_fields_values() - Значения пользовательских полей аккаунтов ● ac_get_custom_account_fields() - Список пользовательских полей аккаунта ● ac_get_deals() - Список сделок ● ac_get_custom_deal_fields_values() - Значения пользовательских полей сделок ● ac_get_custom_deal_fields() - Список пользовательских полей сделок ● ac_get_deal_piplines() - Список групп этапов сделок ● ac_get_deal_stages() - Список этапов сделок ● ac_get_deal_activities() - Список активностей по сделке ● ac_get_users() - Список пользователей ● ac_get_tags() - Получить список всех созданных тегов ● ac_get_contacts() - Список контактов ● ac_get_custom_contact_fields_values() - Значения пользовательских полей контактов ● ac_get_custom_contact_fields() - Список пользовательских полей этапов ● ac_get_contact_tags() - Получить теги определённых контактов. ● ac_get_campaigns() - Список кампаний ● ac_get_campaigns_aggregate_revenues() - Дохход по кампаниям ● ac_get_campaigns_messages() - Список сообщений кампаний ● ac_get_messages() - Список всех сообщений Установка пакета: Установить пакет можно стандартной командой install.packages('ractivecampaign') Сам использую пакет с октября, работает вполне стабильно. #новости_и_релизы_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Составили свой топ заблуждений человечества: 1) люди используют только 10% мозга, 2) после универа легко найти работу, 3) LTV — это показатель прибыли за всё время сотрудничества с клиентом. Подробно про LTV поговорим 9 декабря в 11:00. Встречаемся за круглым столом аналитиков, подключайтесь в онлайне 📈 На деле мало кто знает, что это за метрика, как её правильно считать и прогнозировать. LTV — это название группы важнейших вопросов к продукту? Или вокруг LTV много хайпа и мало смысла? Три участника, разные точки зрения — истина родится в споре. Увидимся 9 декабря в прямом эфире, регистрируйтесь 👉 http://amp.gs/jYsg9 #всемколтач
  • Реклама

  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Пакет framecleaner является обёрткой над dplyr::mutate(), и предоставляет несколько функций для краткого решения общих проблем, возникающих при приведении в порядок небольших и средних наборов данных. Ниже разберём несколько примеров.
     
    # тестовый набор данных
    tibble::tibble(
      date = c("20190101", "20190305", "20201012"),
      numeric_val = c(1, NA, 5),
      char_val = c("", "    val ", "-")
    ) -> sample_table
    1. Пометка пустых значений как NA. По умолчанию функция make_na() заменяет значения c("-", "", " ", "null") на NA, но вы можете расширить список этих значений.
     
    sample_table %>% 
      make_na()
    2. Быстрое удаление лишних пробелов в строковых переменных.
     
    sample_table %>% 
      remove_whitespace()
    3. Быстрое преобразование строкового описание даты в тип даты.
     
    sample_table %>% 
      set_date()
    4. Эвристическое перемещение столбцов таблицы таким образом, что бы строковые данные, и даты были в левой части таблицы, а числа в правой. Столбцы одного типа сортируются дополнительно по алфавиту.
     
    sample_table %>% 
      relocate_all()
    5. Применение всех описанных выше операций одной функцией.
     
    sample_table %>% 
      clean_frame()
    6. Замена NA значений на заданное.
     
    sample_table %>% 
      fill_na()
    Ссылки: - примеры коды взяты из виньетки пакета framecleaner - пакет framecleaner вошел в ТОП 40 опубликованных на CRAN в октябре 2021 #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​С чего начинается аналитика продукта? Умение выстраивать аналитическую систему и использовать data‑driven подход высоко ценится на рынке. Как устроена маркетинговая и продуктовая аналитика и как развиваться в этой сфере — разбирают в Нетологии. На бесплатном курсе-симуляторе «Аналитика продукта: куда уходят деньги компании» вы попробуете себя в роли аналитика и пройдёте этапы маркетингового и продуктового анализа на примере реального кейса. Начните свой путь в аналитике → https://netolo.gy/hkT
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Забираем большие маленькие данные по REST API Автор: Илья Шутов (@iMissile) В статье приведен блочный разбор типового скрипта для получению данных из внешней системы через REST API. Его можно рассматривать как первое приближение решения задачи подобного класса. Содержание: - Определяемся с требованиями - Инициализация - Запрашиваем список кампаний - Сверка с локальным кэшем - Подготовка заданий для многопоточного опроса кампаний - Проводим сбор данных по кампаниям в многопоточном режиме - Финализируем результат - Заключение #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Что такое ленивое чтение, и зачем оно надо Недавно я рассказывал про эксперименты, которые проводились над пакетом readr. В их основе лежало ленивое чтение данных. Что такое ленивое чтение Ленивое чтение - позволяет не считывать весь файл командой чтения, вместо этого файл индексируется, и R запоминает расположение каждой строки данных. Процесс чтения инициализируется только в момент обращения к данным, и считывает только необходимый для выполняемой операции фрагмент данных. Пример Давайте рассмотрим небольшой пример кода:
    library(tidyverse)
    
    df <- read_csv(readr_example("mtcars.csv"), lazy = TRUE)
    
    df |>
      filter(hp > 200) |>
      summarise(mean(mpg))
    
    
    Изображение к этому посту показывает какие данные readr в этом случае будет считывать, на схеме эти данные изображены оранжевым цветом. Горизонтальная полоса вверху - это заголовки таблицы. Вертикальная полоса - это столбец hp, который загружается целиком в связи с тем, что используется в функции filter(). А отдельные оранжевые ячейки это данные столбца mpg, только по тем строкам, которые остались после фильтрации по условию hp > 200. Как видите, в зависимости от того, что вы делаете с файлом, ленивое чтение может значительно уменьшить потребляемый объём памяти файлом, к которому вам в конечном итоге потребуется доступ. Активация ленивого чтения в vroom и readr В пакете vroom ленивое чтение применяется по умолчанию. В readr активируется опцией options(readr.read_lazy = TRUE) или аргументом lazy, как в приведённом выше примере кода. Проблема ленивого чтения на Windows В одном из предыдущих постов я более подробно писал о проблеме ленивого чтения на Windows. Заключается она в том, что при ленивом чтении блокируется файловый дескриптор, и другие процессы и программы в этот момент не могут получить доступ к файлу, что может вызвать ошибки. Ссылки: - пример кода и изображение заимствованы из статьи "Eager vs lazy reading in readr 2.1.0" #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Релиз rgoogleads 0.4.0 Друзья, новая версия rgoogleads уже доступна для установки с CRAN или GitHub. rgoogleads - Пакет для работы с Google Ads API. Что нового: ● Пакет переведён на работу с Google Ads API v9. ● Добавлена поддержка переменной среды GADS_EMAIL, которая устанавливает дефолтный email для работы с Google Ads API при подключении пакета. ● В основную функцию запроса данных gads_get_report_helper() добавлена проверка, можно ли запрашивать с указанным ресурсом поля даты, если нет, то функция аннулирует значения аргументов date_from, date_to и during. ● В зависимости rgoogleads добавлены следующие пакеты: memoise, cachem, rappdirs. Эти пакеты обеспечивают кеширование данных, получаемых функцией gads_get_fields(), которая используется внутри gads_get_report_helper() для проверки совместимости запрашиваемого ресурса с полями даты. Ссылки: - NEWS пакета - Статья о переходе с RAdwords на rgoogleads #новости_и_релизы_R
  • R4marketing | канал Алексея Селезнёва | Язык R