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

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

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

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

    ​​RStudio, R Markdown, Latex и отчеты в PDF формате Автор: Александр Королев Сегодня я хочу рассказать о том, как я писал отчеты на R, с чем сталкивался и как решал проблемы, которые возникали по ходу разработки. Отчеты были в формате PDF и запускались из Python в Camunda. Содержание: 1. Запуск отчетов на R 2. Конфликт библиотек 3. Утечка памяти в Rmarkdown::render 4. Latex 5. Заглушки для внешних библиотек при написании Unit тестов 6. Отладка кода 7. Использование классов в проекте 8. Прочие нюансы проекта 9. Заключение #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Построение Bump Charts в ggplot2 Бампчарты - это эффектный и необычный способ показать как меняется ранжирование категорий с течением времени. Например, вы хотите показать какие категории продуктов занимали первое место в ваших продажах (и как долго), какие - второе и третье места, меняется ли лидер продаж с изменением сезона. Или, если взять пример из спорта, вы захотите посмотреть рейтинг по футбольным командам за всю историю чемпионата! Пакет ggbump, является расширением для ggplot2, который добавит вам функцию geom_bump(). Пример из официальной справки:
     
    library(ggbump)
    library(ggplot2)
    library(dplyr)
    
    df <- data.frame(country = c(
      "India", "India", "India",
      "Sweden", "Sweden", "Sweden",
      "Germany", "Germany", "Germany",
      "Finland", "Finland", "Finland"),
      year = c(2011, 2012, 2013,
        2011, 2012, 2013,
        2011, 2012, 2013,
        2011, 2012, 2013),
      rank = c(4, 2, 2, 3, 1, 4, 2, 3, 1, 1, 4, 3))
    
    ggplot(df, aes(year, rank, color = country)) +
      geom_point(size = 10) +
      geom_bump(size = 2)
    Результат работы кода можно увидеть на изображении к посту. Ссылки: - Определение бамп чарта взял тут - Узнал про пакет ggbump из статьи "5 hidden gems from gg-packages to level up your dataviz game" Смотрите также: - Построение графика водопада в R - Как создать диаграмму датчик с помощью ggplot2 #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Видео урок "R Studio. Урок 4. Базовые манипуляции." Автор: Иван Лабетов Описание: В этом видео Иван Лабетов расскажет об основных функциях манипуляции данными из пакета dplyr, таких как select(), slice(), filter(), mutate() и rename(). #видео_уроки_по_R
    R Studio. Урок 4. Базовые манипуляции.

    В этом видео Иван Лабетов расскажет об основных функциях манипуляции данными из пакета dplyr, таких как select, slice, filter, mutate и rename. Шпаргалку по функциям вы можете найти по ссылке: https://raw.githubusercontent.com/rstudio/cheatsheets/main/data-transformation.pdf

    YouTube
  • Реклама

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

    Как добавить возможность скрывать и раскрывать блоки кода в Rmarkdown Далеко не всегда сам код в исследовании имеет первостепенное значение. Гораздо чаще его добавляют в само исследование с целью воспроизводимости результатов, поэтому большинство читателей листинг кода будет только отвлекать. К счастью в Rmarkdown есть возможность добавить интерактивный спойлер для фрагментов кода, пример его работы видно на изображении к посту. Добавить такой спойлер можно с помощью YAML заголовка code_folding: hide в шапке Rmarkdown документа. Пример:
    ---
    title: "Code Collapse Demonstration"
    output:
      html_document:
        code_folding: hide
    ---
    
    ```{r}
    #| include = FALSE
    library(dplyr)
    library(ggplot2)
    ```
    
    There is a negative correlation between horsepower and miles per gallon.
    
    ```{r}
    mtcars %>% 
      ggplot(aes(x = hp, y = mpg)) +
      geom_point()
    ```
    
    
    #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Запись курса по R Автор курса: Иван Поздняков (@pozdniakovivan) Содержание: 1. R & Stats 2. Векторы в R 3. Векторы в R (продолжение), матрица, список, дата фрейм 4. Установка пакетов, импорт и экспорт данных 5. Условия, функции, *apply(), data.table/tidyverse 6. Описательная статистика 7. ggplot2 8. Статистика вывода 9. t-тест 10. Корреляция, линейная регрессия 11. Консультация, примеры, ответы на вопросы Все видео опубликованы на канале Ивана.
  • R4marketing | канал Алексея Селезнёва | Язык R

    Big Data - действительно полезный блог для всех, кто работает с данными. - огромный набор бесплатных наборов данных - инструменты для работы с данными - обучающие материалы для датасаентистов - лучшие практики Машинного Обучения - перевод книг и статей 🔥 Подписаться
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Игра крестики - нолики на R Пакет tictactoe - являеться консольной реализацией игры крестики нолики на языке R, Играть можно как вдвоём, так и с искусственным интеллектом. Установка: install.packages("tictactoe") Игра: Пакет содержит три функции: ● ttt_human() - создаёт объект обычного игрок ● ttt_ai() - создаёт объект игрока - искусственного интеллекта ● ttt() - запускает игру К тому же вы можете указать уровень сложности искусственного интеллекта с помощью аргумента level:
     
    ttt(ttt_human(), ttt_ai(level = 4))
    Приведённый выше код запустит игру, в которой первым будет ходить человек, вторым искусственный интеллект, при этом уровень сложности установлен 4, максимально доступный уровень сложности 5. После запуска функции ttt() в консоль будет выведено игровое поле, и вы можете совершить ход введя координаты:
     
    > ttt(ttt_human(), ttt_ai())
        A B C
       ------
     1| . . .
     2| . . .
     3| . . .
    
     Player 1 (no name) to play
    choose move (e.g. A1) > A1
     action = A1 
        A B C
       ------
     1| X . .
     2| . . .
     3| . . .
    
     Player 2 (ttt AI) to play
     action = C1 
        A B C
       ------
     1| X . O
     2| . . .
     3| . . .
    
     Player 1 (no name) to play
    choose move (e.g. A1) > B2
     action = B2 
        A B C
       ------
     1| X . O
     2| . X .
     3| . . .
    
     Player 2 (ttt AI) to play
     action = B1 
        A B C
       ------
     1| X O O
     2| . X .
     3| . . .
    
     Player 1 (no name) to play
    choose move (e.g. A1) > C3
     action = C3 
    game over
        A B C
       ------
     1| X O O
     2| . X .
     3| . . X
    
     won by Player 1 (no name)!
    #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Важно ли DS аналитику знать про software development? Очередная порция полезных советов от Ильи Шутова (@iMissile). Описание: Множество курсов, призванных подготовить DS специалистов «за полгода», создают впечатление, что уж сертифицированным датамайнером стать достаточно просто. А что? Немного основ DS языка, немного по структуре данных, немного по различным преобразованиям данных, немного SQL, немного математики (в ML не погружаемся, только знакомимся), немного визуализации, немного HTML+JS+CSS. Специалист готов? На практике оказывается, что маловато будет. Содержание: 1. Зайдем с конца. «Чего не хватает?» 2. Система контроля версий 3. Code conventions 4. Ясность мышления, чистота кода, пайпы 5. Самоцитирование (copy-paste) 6. Применение элементов безопасного программирования (defensive programming) 7. Бенчмарки 8. Документирование кода 9. Reprex 10. Окружение в ОС 11. Ознакомление со смежными технологиями #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Как установить и использовать язык программирования R в Ubuntu Содержание: 1. Установка R на Ubuntu с помощью репозиториев CRAN Шаг 1: Добавьте ключ подписи CRAN gpg Шаг 2: Добавьте репозиторий CRAN для установки R Шаг 3: Обновление индекса репозитория Шаг 4: Установите язык программирования R Шаг 3: Проверка установки (необязательно) 2. Ваша первая программа на языке R 3. Создание и запуск скрипта R 4. Деинсталляция R #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Добавляем вкладки в Rmarkdown файлы Наборы вкладок позволяют более компактно использовать рабочее пространство вашего документа Rmarkdown. Создать набор вкладок можно добавив к заголовку флаг {.tabset}. При его применении все подзаголовки раздела будут преобразованы во вкладки (пример можно увидеть на изображении к посту). Пример Rmarkdown:
    ---
    title: "Tabset Demonstration"
    output: html_document
    ---
    
    ```{r}
    #| include = FALSE
    library(dplyr)
    library(ggplot2)
    ```
    
    There is a negative correlation between horsepower and miles per gallon.
    
    ## Tab {.tabset}
    
    ### Plot
    
    ```{r}
    mtcars %>% 
      ggplot(aes(x = hp, y = mpg)) +
      geom_point()
    ```
    
    ### Table
    
    ```{r}
    #| collapse = TRUE
    mtcars %>% 
      glimpse()
    ```
    
    
    #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Друзья, сегодня ровно 4 года, как я анонсировал у себя в facebook запуск канала R4marketing. Так что сегодня у канала 4ый день рождения. На данный момент в канале опубликовано более 1100 полезных публикаций о применении языка R. Аудитория канала приближается к 4500, за что вам всем огромное спасибо. Поздравить с днём рождения канала можно например тут, или по кнопке в шапке канала.
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Транслируем R скрипт или любой другой текстовый документ в интернет livecode — пакет, который позволяет транслировать локальный документ R (или любой другой текстовый) через Интернет и предоставлять оперативные обновления по мере его редактирования. Установка:
     
    remotes::install_github("rundel/livecode")
    Использование: Открываете в RStudio свой скрипт, либо любой другой текстовый файл, и в консоли выполняете следующую команду:
     
    server = livecode::serve_file()
    #> ✔️ Started sharing 'example.R' at 'http://192.168.1.128:30000'.
    #> ✖️ The current ip address ('192.168.1.128') for the server is private, only users on the same local network are likely to be able to connect.
    После чего откроется браузер, в котором будет транслироваться ваш документ из RStudio в режиме реального времени. Единственным ограничением является то, что ссылку могут открыть только, те кто находятся в вашей же сети, например подключены к вашему wifi. Отправка сообщений: Так же вы можете отправить в браузер сообщения:
     
    server$send_msg("Hello World!", type = "success")
    server$send_msg("Oh no!\n\n Something bad has happened.", type = "error")
    Остановить трансляцию: Для остановки трансляции используйте следующую команду:
     
    server$stop()
    #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Top постов за октябрь 2022 По пересылкам: 1. R на смартфоне 2. ​​Краткое руководство по строкам и регулярным выражениям в R 3. ​​Tidymodels: аккуратное машинное обучение в R 4. ​​Кластерный анализ в R 5. ​​Пример анализа географических данных по пожарам По просмотрам: 1. R на смартфоне 2. ​​Логистическая регрессия с помощью tidymodels 3. ​​Краткое руководство по строкам и регулярным выражениям в R 4. ​​Как с помощью языка R передать данные из Facebook в Google BigQuery и строить на их основе отчёты в Google Data Studio 5. ​​Поиск файлов по тексту в R По реакциям: 1. R на смартфоне 2. Настоящий Бермудский треугольник 3. Комментирование объектов в R 4. ​​Интерактивные таблицы средствами языка R 5. ​​Кластерный анализ в R #top
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Игра FourScores написанная на R Пятничное. Пакет FourScores является игрой, в которой могут играть как человек против человека так и человек против искусственного интелекта. FourScores основан на настольной игре "Собери Четверку" (Connect 4). Цель игры — расположить раньше соперника по горизонтали, вертикали или диагонали четыре фишки своего цвета подряд.
     
    library(FourScores)
    
    # запускаем игру
    FourScores(
      rows           = 5, 
      columns        = 5, 
      AI             = T, 
      AIstrength     = 0, 
      AIplayernumber = 1, 
      PlayerNames    = c("PC", "Human")
      )
    Аргументы функции FourScores(): ● rows - количество строк в игровом поле; ● columns - количество столбцов в игровом поле; ● AI - играть против искусственного интелекта; ● AIstrength - количество ходов, которые будет моделировать ИИ; ● AIplayernumber - целое число: 0 или 1: должен ли ИИ быть игроком 1 или игроком 2; ● MACuser - на некоторых компьютерах, отличных от Mac, для этого параметра можно установить значение FALSE, чтобы использовать мышь на графическом устройстве; ● PlayerNames - вектор содержащий имена игроков; ● getnewnames - надо ли запрашивать новые имена при перезапуске игры; ● PlayerColors - цвета фишек игроков; ● getnewcolors - надо ли запрашивать новые цвета фишек игроков при перезапуске игры; #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Русскоязычный CheatSheet по dplyr Разбор популярных методов обработки данных пакета dplyr. Выборка, фильтрация, сортировка, агрегатные и оконные функции, а также соединение наборов данных. Содержание: 1. Выборка данных 1.1. Перечисление 1.2. Отрицательное перечисление 1.3. По номерам 1.4. По условию 1.5. Вернуть вектор 2. Фильтрация строк 2.1. По логическому условию 2.2. Уникальные значения 2.3. По индексу 2.4. Случайные строки 3. Сортировка строк 3.1. По возрастанию 3.2. По убыванию 3.3. По нескольким столбцам 3.4. Расширенная сортировка 4. Группировка и агрегатные функции 5. Вычисляемые столбцы 5.1. Новый столбец 5.2. Изменить несколько столбцов 5.3. Оконные функции 5.4. Вычисление с условием 5.5. Обработка нуллов 6. Объединение таблиц #статьи_по_R
  • Реклама

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

    Изменения в tidyselect 1.2.0 tidyselect — это низкоуровневый пакет, обеспечивающий основу для контекстов выбора в функциях tidyverse. Контекст выбора — это аргумент, подобный cols в pivot_longer(), или набор аргументов, как ... в таких функциях как select(). Т.е. даже если напрямую сам tidyselect вы не используете, то косвено вы его используете при манипуляции данных в dplyr и tidyr. Обновляться до tidyselect 1.2.0 рекомендуется после выпуска dplyr 1.1.0, который планируется на конец октября. Основные изменения: 1. Использование вектор имён для указания списка столбцов без all_of() и any_of() О функциях all_of() и any_of() я рассказывал в одном из своих видео уроков, найти его можно по ссылке. Если вкратце то эти функции позволяют вам использовать вектор имён для выбора столбцов, например внутри функции dplyr::select(): ● all_of() - выбирает столбцы по именам указанным в векторе, и возвращает ошибку, если какой то из указанных столбцов отсутствует в таблице. ● any_of() - выбирает столбцы по именам указанным в векторе, если какой то из указанных столбцов отсутствует в таблице, он просто будет проигнорирован. В новой версии tidyselect обращение к столбцам из вектора имён возможно только с использованием этих функций. Сделано это с целью устранения несогласованности между обращения к переменным глобального окружения и локальным переменных таблицы. В приведённом ниже примере мы создаём новую глобальную переменную vars со списком имён нужных нам столбцов. После мы создаём локальную переменную в таблице с таким же именем, которая просто хранит номер строки. Неоднозначность старого подхода при выборе столбцов из вектора имён была в том, что по коду не очевидно, мы хотим обратиться для выбора столбцов к списку имён из глобальной переменной vars, или получить таблицу с одним столбцом vars.
    library(tidyverse)
    my_data <- mtcars |> mutate(vars = 1:n())
    vars <- c("cyl", "am")
    
    my_data |> select(all_of(vars)) |> glimpse()
    
    Rows: 32
    Columns: 2
    $ cyl <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 8, 6, 8, 4
    $ am  <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1
    
    
    Мы получили таблицу с двумя столбцами, перечисленными в глобальной переменной vars.
    my_data |> select(vars) |> glimpse()
    
    Rows: 32
    Columns: 1
    $ vars <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
    
    
    А так, мы получили таблице с одним столбцом vars, таким образом разработчики устранили описанную выше неоднозначность. 2. Использование .data$colname для обращение с локальным переменным таблицы Местоимение .data — это удобный способ программирования с функциями маскирования данных, такими как mutate() и filter(). Подробнее о нём рассказано в статье "Программирование с dplyr". Пример использования:
    var <- "am"
    mtcars |> transmute(am = .data[[var]] * 10) |> glimpse()
    mtcars |> mutate(.data$am * 2) |> glimpse()
    
    
    Начиная с версии tidyselect 1.2.0, в связи с описанными выше рекомендациями по использованию функций all_of() и any_of() использование местоимение .data становится устаревшим, вместо него обращайтесь локальным переменным таблицы через указанные функции, или просто прописав в кавычках название нужного вам столбца:
    var <- "am"
    mtcars |> select(all_of(var)) |> glimpse()
    #> Rows: 32
    #> Columns: 1
    #> $ am <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,…
    
    mtcars |> select("am") |> glimpse()
    #> Rows: 32
    #> Columns: 1
    #> $ am <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,…
    
    
    Ссылки: - Информация заимствована из статьи "tidyselect 1.2.0" #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Как получить дефолтные эстетики геометрий ggplot2 ggplot2 является одним из наиболее популярных пакетов в языке R, и одним из мощнейших средств визуализации данных. Данный пакет реализует грамматику графики описанную Лэландом Вилкинсоном в книге “The Grammar of Graphics“. Идея грамматики графики заключается в построении графиков слоями, подобно работе в графических редакторов вроде Photoshop. Т.е. у вас есть три основные компонента: ● Данные, которые необходимо визуализировать; ● Геометрии, типы графиков, функции семейства geom_*(); ● Эстетики, настройки слоёв, функция aes(). В канале довольно много публикаций посвящены ggplot2, да и вряд ли вы впервые слышите об этом пакете. Сам я его использую на протяжении многих лет, но только недавно узнал, о том, что можно получить дефолтные настройки эстетики для каждой геометрии. Все эти настройки хранятся в специальных объектах Geom*$default_aes.
     
    library(ggplot2)
    
    GeomLine$default_aes
    #> Aesthetic mapping: 
    #> * `colour`    -> "black"
    #> * `linewidth` -> 0.5
    #> * `linetype`  -> 1
    #> * `alpha`     -> NA
    Ссылки: - узнал об этом из твита #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Интерактивные таблицы средствами языка R Автор: Евгений Матеров В статье сделан обзор некоторых инструментов по созданию таблиц в библиотеке reactable: - формирование основы таблицы; - возможности глобальных настроек и настроек столбцов; - возможности глобальных настроек и настроек столбцов; - группировка и аггрегирование ячеек; - некоторые JavaScript опции. Содержание: ● Введение ● Построение интерактивных таблиц ● Русификация таблиц ● Глобальные настройки таблицы ● Настройка столбцов в таблицах ● Тепловые карты ● Группировка ячеек ● Динамический пересчет суммы ● Условное форматирование ● Заключение #статьи_по_R