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

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

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

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

    Базы данных

    Все про базы данных (Database) По всем вопросам @Pakintoch12

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

    ​​Как получить путь к текущему R файлу В Python, перед запуском скрипта создаются ряд глобальных переменных, таких как __name__, __file__, __spec__ и т.д. Путь к файлу скрипта автоматически записывается в переменную __file__, и вы в любой момент из этой переменной можете получить абсолютный путь к файлу выполняемого скрипта. В R под капотом такой механизм не реализован, но вы же помните, что в R на любой чих есть пакет. Функционал по определению пути к текущему, исполняемому R скрипту предоставляет пакет this.path. В нём вам по большей части понадобится всего две функции: ● this.path() - получить абсолютный путь к исполняемому R файлу. ● this.dir() - получить абсолютный путь к директории исполняемого R файла. Функции this.path2(), this.dir2() и this.dir3() делают тоже самое, но если вы их запускаете, например в не сохранённом R файле вместо ошибки вернут NULL или текущую рабочую директорию. В качестве примера можете создать простейший файл test.R, со следующим кодом:
     
    library(this.path)
    
    print(this.path())
    print(this.dir())
    Далее запустите его в пакетном режиме из командной строки, или в RStudio сочетанием клавиш Ctrl + Shift + Enter. Результат:
     
    > source("~/test.R", echo=TRUE)
    
    > library(this.path)
    
    > print(this.path())
    [1] "C:/Users/Username/Documents/test.R"
    attr(,"this.path.n")
    [1] 1
    
    > print(this.dir())
    [1] "C:/Users/Username/Documents"
    #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

  • Реклама

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

    ​​Закруглённые углы на гистограммах ggplot2 Пакет ggchicklet предоставляет вам дополнительный geom - geom_chicklet(), который по сути является аналогом ggplot2::geom_col(), но даёт возможно установить ралиус с помощью доп аргумента radius, и придать вашему графику более эффектный вид. Установка: На данный момент ggchicklet можно установить одним из следующих способов.
     
    install.packages("ggchicklet", repos = "https://cinc.rud.is")
    # или
    remotes::install_git("https://git.rud.is/hrbrmstr/ggchicklet.git")
    # или
    remotes::install_git("https://git.sr.ht/~hrbrmstr/ggchicklet")
    # или
    remotes::install_gitlab("hrbrmstr/ggchicklet")
    # или
    remotes::install_bitbucket("hrbrmstr/ggchicklet")
    # или
    remotes::install_github("hrbrmstr/ggchicklet")
    Пример:
     
    library(ggchicklet)
    library(ggplot2)
    
    # тестовые данные
    df <- data.frame(
      value = 1:5,
      group = LETTERS[1:5]
      )
    
    # обычная гистограмма
    ggplot(df, aes(group, value)) + geom_col()
    
    # гистограмма с закруглёнными углами
    ggplot(df, aes(group, value)) + 
      geom_chicklet(radius = grid::unit(3, "mm"))
    Смотрите также: - Как исправить перекрывающие друг друга текстовые метки в ggplot2 - Как расположить несколько ggplot2 графиков на одном изображении Ссылки: - Пример кода для построения графика заимствованы из статьи "How to make a rounded corner bar plot in R?" - Способы установки пакета заимствованы из его README #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Создаём быстрый скриншот сайта с помощью R Пакет webshot2 максимально упрощает процесс создания скриншота сайта, примеры приведённые ниже иллюстрируют это.
     
    library(webshot2)
    
    # снимок одной страницы
    webshot("https://www.r-project.org")
    
    # снимок нескольких страниц в параллельно мрежиме
    webshot(c("https://www.r-project.org", "https://www.rstudio.com"))
    
    # Используем CSS селектер для определения области скриншота
    webshot(
      "http://rstudio.github.io/leaflet", 
      "leaflet-menu.png", 
      selector = ".list-group"
      )
    
    # полученный скриншот можно использовать 
    # совместно с другими функциями в конвейере
    webshot("https://www.r-project.org/", "r-small.png") %>%
      resize("75%") %>%
      shrink()
    
    
    Аргументы функции webshot(): url - URL адрес сайта, скриншот которого вам надо сделать ● file - Название файла, в который будет сохранён скринот ● vwidth - Ширина области просмотра. Это ширина «окна» браузера. ● vheight - Высота окна просмотра. ● selector - Позволяет указать CCS селектор, определив необходимую часть сайта, которая будет сохранена в виде скриншота. ● cliprect - Позволяет задать размер прямоугольника веб сайта, который будет помещён в скриншот. По умолчанию, если не указать selector и cliprect будет сохранена страница целиком. Либо вы можете указать вектор из четырёх чисел по порядку определяющий координаты левой, верхней точки, а так же ширину и высоту скриншота. ● expand - 448 / 5 000 Результаты перевода Числовой вектор, указывающий, на сколько пикселей расширить прямоугольник отсечения. ● delay - Время ожидания перед тем, как сделать снимок экрана, в секундах. ● zoom - Число, указывающее коэффициент масштабирования. При коэффициенте масштабирования 2 количество пикселей по вертикали и горизонтали будет вдвое больше. ● useragent - Задаёт заголовок User-Agent. #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Работа с данными часто требует знания где данные находятся, какими инструментами с ними работать и знания что такое Modern Data Stack. Тем кто интересуется этой темой могу порекомендовать канал Ивана Бегтина. Иван много пишет про инженерию данных, открытые данные, их доступность в мире, то как с ними работать и регулярно публикует интересные подборки чтения про актуальные статьи про работу с данными и инструменты для этой задачи. Особенно, учитывая бэкграунд Ивана, это будет полезно всем тем кто работает с государственными данными во всех их формах.
    Ivan Begtin

    I write about Open Data, Procurement, e-Government, Open Government, Budgets, Privacy and other govtech stuff Chat https://telegram.me/begtinchat Facebook - https://facebook.com/ibegtin Secure contacts [email protected]

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

    ​​Как использовать в своём пакете, не экспортируемые объекты из других пакетов Данная заметка будет полезна разработчикам пакетов, которые планирую публикацию своих разработок на CRAN. Что такое не экспортируемые объекты Пакеты обычно включают в себя два типа функций: ● экспортируемые - те, которые становятся доступны пользователю после подключения пакета, или по обращению через двойное двоеточие (pkg::fun()). ● не экспортируемые - функции, которые не экспортируются даже после подключения пакета, к ним можно получить доступ через тройное двоеточие (pkg:::fun()). Не экспортируемые объекты зачастую направлены на внутренние нужды пакета, и в 99% случаев доступ к ним не нужен конечным пользователям пакетов. Пример такой функции Любители dplyr наверняка знакомы с функцией where(). Она используется когда вам необходимо получить, например объекты одного типа.
     where(is.numeric())
    
    
    Я довольно часто использую dplyr в своих пакетах, и не редко использую функцию where(), но это не экспортируемая функция. С какой ошибкой вы столкнётесь пытаясь использовать не экспортируемый объект При прогоне пакета через авто тесты вы можете увидеть предупреждение:
     dependencies in R code ... NOTE
      Unexported object imported by a ':::' call: 'package:::function'
        See the note in ?`:::` about the use of this operator.
    
    
    Это как раз о том, что вы используете не экспортируемый объект, и политикой CRAN это не приветствуется. Как добавить импорт не экспортируемого объекта в свой пакет Есть несколько приёмов, на практике с описанной проблемой я встречался дважды, первый раз когда пытался экспортировать функцию where() из tidyselect, на GitHub разработчики tidyselect рекомендуют поместить следующую конструкцию внутрь функции .onLoad.
     
    utils::globalVariables("where")
    Также с похожей проблемой я столкнулся при экспорте is_response(), из пакета httr2, тут нашел немного другой вариант, вставить следующий вызов в любое место R кода вашего пакета.
    is_response <- getFromNamespace("is_response", "httr2")
     
    
    Также в обоих случаях вам необходимо добавить импорт пакета utils в файлы NAMESPACE и DESCRIPTION вашего пакета. #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Она: я беременна твоим ребёнком Он: от куда мне знать, что это мой ребёнок? Она:
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Темы для ggplot2 основанные на телешоу Пакет tvthemes предоставляет вам набор готовых тем, палитр и шрифтов, заимствованных из различных телешоу и сериалов, таких как: Игра Престолов, Симпсоны, Спанч Боб и многие другие. Мы, в качестве примера, возьмём тему из мультсериала Симпсоны. Для начала необходимо установит нужные шрифты, для этого воспользуемся функцией import_simpsons(), после чего, в консоли увидим путь, к папке со шрифтом, файлы шрифтов необходимо перенести в папку Windows/fonts. Можно посмотреть палитру с помощью scales::show_col(tvthemes:::simpsons_palette). Ниже пример кода построения графика, приведённого на изображении к посту:
     
    library(tvthemes)
    library(ggplot2)
    library(dplyr)
    library(glue)
    library(extrafont)
    loadfonts(quiet = TRUE)
    
    import_simpsons()
    
    data <- gapminder::gapminder %>% 
      filter(country %in% c("France", "Germany", "Ireland", "Italy", "Japan", "Norway", "Belarus")) %>% 
      mutate(year = as.Date(paste(year, "-01-01", sep = "", format='%Y-%b-%d')))
    
    ggplot(data = data, aes(x = year, y = gdpPercap, fill = country)) +
      geom_area(alpha = 0.8) +
      scale_x_date(breaks = data$year, date_labels = "%Y") +
      scale_y_continuous(expand = c(0, 0), labels = scales::dollar) +
      scale_fill_simpsons() +
      labs(title = "The Simpsons",
        subtitle = "Theme inspired in part by @nathancunn's blog posts",
        caption = glue("
                          A 'Bake 'em Away, Toys!' Production
                          Location: Sector 7G"),
        x = "Wel-diddly-elcome neighborino!",
        y = "Price of Duff Beer") +
      theme_simpsons(title.font = "Akbar",
        text.font = "Akbar",
        axis.text.size = 8)
    Ссылки: - Другие примеры тем и кода можно найти в официальной документации #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Круглое катать, прямоугольное тащить, деревья сажать Автор: Илья Шутов (@iMissile) В большинстве случаев в DS предпочитают работать с прямоугольными данными и на то есть масса причин и обоснований. Очень популярна тема парсинга и развертывания вложенных json. Часто дают тестовые задания на приведение к прямоугольному виду. Но далеко не все задачи сводятся к data.frame и не обязательно весь DS сводить к ML. Есть масса задач, оперирующих, например, с графами или их частным случаем — деревьями. Можно использовать библиотеку igraph или аналоги и не думать о деталях. А можно попробовать чуть заглянуть внутрь алгоритмов. На примере одной задачки посмотрим на работу с деревьями с альтернативной колокольни. Содержание: ● Постановка задачи ● План решения ● Собираем сводку по префиксам ● Визуализируем ● Заключение #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Обновление функций case_when() и if_else() в dplyr development version Для тех кто впервые слышит о функции case_when() по этой ссылке можно познакомится с ней по ближе. Тем кто с case_when() знаком, расскажу о том, что в ней изменилось: ● Ранее для обозначения условия по умолчанию, которое будет выполнено только в том случае, когда ни одно из всех выше указанных не выполнились, использовали конструкцию TRUE ~ default_value, что снижало читабельность кода, теперь для этого добавлен отдельный аргумент .default. ● Функции case_when() и if_else() были переписаны на базе пакета vctrs. Например, теперь нет необходимости использовать типизированные варианты NA_character, NA_complex, можно использовать просто обощённый вариант - NA. ● case_when() теперь поддерживает большее количество типов значений. Например, вы можете использовать tibble для одновременного создания нескольких столбцов. Примеры того, как изменился синтаксис:
     
    # тестовые данные
    x <- c(1, 3, 0, 5, 0 ,7)
    
    # старый вариант
    dplyr::case_when(
        x == 0 ~ NA_character,
        x <= 2 ~ "low",
        x <= 4 ~ "medium",
        TRUE ~ "high"
    )
    
    # новый вариант
    dplyr::case_when(
        x == 0 ~ NA,
        x <= 2 ~ "low",
        x <= 4 ~ "medium",
        .default = "high"
    )
    А приведённый ниже пример вообще в старом варианте реализовать не получилось бы:
     
    library(dplyr)
    
    df <- tibble(x = c(1, 3, 0, 5, 0 ,7))
    
    df %>% mutate(
      case_when(
        x == 0 ~ NA,
        x <= 2 ~ tibble(type = 'low', id = 1),
        x <= 4 ~ tibble(type = 'medium', id = 2),
        .default = tibble(type = 'high', id = 3)
      )
    )
    Результат:
     
    # A tibble: 6 × 3
          x type      id
      <dbl> <chr>  <dbl>
    1     1 low        1
    2     3 medium     2
    3     0 NA        NA
    4     5 high       3
    5     0 NA        NA
    6     7 high       3
    Ссылки: - узнал об этом из твита Девиса Вогана #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    Якщо ви маркетолог чи продуктовий спеціаліст, працюєте з даними, але хочете структурувати знання і стати самостійнішими — опануйте гроуз-аналітику. На курсі Growth Analytics у Projector ви отримаєте необхідну базу для роботи з аналітикою. За три місяці попрацюємо з: • базами даних: зрозуміємо їхні основні відмінності та дізнаємось, як зібрати потрібні дані та побудувати event-tracking plan; • різними інструментами: побудуємо екосистему інструментів, які підійдуть конкретному продукту; • метриками: розберемося в ієрархії метрик, навчимося її будувати, заглибимося в retention marketing та методології запуску експериментів; • запитами: самостійно напишемо базові запити і навчимося розуміти складніші запити при роботі з аналітиками; • візуалізацією: розберемося з інструментом Tableau, самостійно побудуємо дашборди і дізнаємось, як розповідати аналітичну історію. Наприкінці чекає фінальний проєкт, де ви на практиці створите для клієнта повну аналітичну історію — з візуалізацією в дашборді та SQL-кодом. Приєднуйся до курсу
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Трюки ggplot2 - распределения Автор: Кибальников Дмитрий (@Kb_Dm) Ранее я писал о важности использования гистограмм при анализе процессов в бизнесе и теперь пришло время поделиться несколькими трюками о том как можно сделать такие диаграммы более информативными. Такие трюки – являются итогом моего неустанного поиска более совершенных методов визуализации. Фрагменты этой статьи долгое время хранились в виде черновиков и теперь наступило время их собрать вместе и опубликовать. Содержание: ● Гистограммы ● Баффет уже не торт ● Трюк № 1 – переиспользование элемента ggplot2 ● Трюк № 2 – переиспользование нескольких элементов ggplot2 ● Трюк № 3 – гистограмма и плотность распределения ● Краткие итоги Предыдущие статьи из этой серии: - Трюки ggplot2 - легенда - Неопределённость и бизнес Ссылка на телеграм канал автора статьи: investcookies #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    История языка R ● 1975 год, начата разработка языка S в Bell Labs, ● 1988 выход книги "The New S Language" под авторством Джона Чемберса. ● 1993 год Росс Ихека и Роберт Джентельмен начинают разработку языка R, как бесплатного аналога языка S. ● 1995 год релиз языка R под GNU лицензией ● 1996 первая официальная публикация о языка R "R: a language for Data Analysis and Graphics" ● 1997 основан CRAN ● 2000 релиз первой стабильной версии R 1.0.0 ● 2001 создание Bioconductor ● 2004 R 2.0.0, добавлена поддержка ленивых вычислений и работы с большими данными ● 2007 Хедли Викхем релизит ggplot2 ● 2011 релиз RStudio Beta 0.92 ● 2012 первый релиз shiny ● 2013 Релиз R 3.0.0 с поддержкой 64 битной архитектуры ● 2014 выпуск стабильной версии Rmarkdown ● 2016 выпуск Tidyverse 1.0.0 ● 2020 выпуск R 4.0.0
  • R4marketing | канал Алексея Селезнёва | Язык R

    Да, специально для тебя у нас есть парочка годных телеграм-каналов: Python tricks — для тех, кто изучает python и хочет узнать все тонкости языка. В канале выкладываются фишки, лайфхаки и опросы. Open Code — здесь публикуются крутые проекты с открытым исходным кодом. Можно изучить как создают проекты опытные разработчики.
  • Реклама

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

    ​​Работа с часовыми поясами в lubridate Сегодня приведу пример того, как в пакете lubridate устроена работа с конвертацией отметки времени между часовыми поясами. Для начала, что бы получить список названий часовых поясов используйте функцию OlsonNames() из базового R. Она вернёт вектор названий всех часовых поясов. Далее, уже в самом lubridate есть две функции для работы с часовыми поясами: ● with_tz() - Получить дату и время в другом часовом поясе, т.е. указанную в первом аргументе отметку времени мы конвертируем в другой часовой пояс; ● force_tz() - Замените часовой пояс, чтобы создать новую дату и время, т.е. значение даты и времени не меняется, но меняется часовой пояс. На примерах ниже разница между описанными функциями будет более понятна:
     
    library(lubridate)
    
    x <- ymd_hms("2009-08-07 00:00:01", tz = "America/New_York")
    
    with_tz(x, "GMT")
    [1] "2009-08-07 04:00:01 GMT"
    
    force_tz(x, "GMT")
    [1] "2009-08-07 00:00:01 GMT"
    
    
    Читайте также: - Пакеты для работы с датой и временем - Видео урок по работе с пакетом clock Поддержать канал: Вы можете поддержать канал любой произвольной суммой, сделать это можно по ссылке. #заметки_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    ​​Неопределённость и бизнес Автор: Кибальников Дмитрий (@Kb_Dm) Шикарная статья с примерами кода на R. Думаю, хорошая визуализация – это ключ к пониманию многих вещей. Наиболее распространенным способом визуализации меры неопределенности в теории вероятности – является построение диаграммы распределения т.е. гистограммы. Далее я построю простую аналогию, которая позволяет достаточно быстро добиться понимания того, что изображено на диаграммах распределения. Содержание: ● Этот несовершенный мир ● Про гольф и бизнес ● Модель гольф-бизнеса ● Качество и правило трех сигм ● Реальный кейс ● Итоги #статьи_по_R
  • R4marketing | канал Алексея Селезнёва | Язык R

    👨🏻‍💻 3 канала, с помощью которых ты освоишь программирование от А до Я: ='_blank' rel='noreferrer nofollow' href='https://t.me/+v63_p0ykzJQ3OWVi'>Easy Code - настоящий сундук с сокровищами для каждого кодера. Видео-уроки, статьи, шпаргалки, материалы от преподавателей ведущих ВУЗов и многое другое в одном канале. Просто Python - здесь есть все чтобы упростить вам изучение Python: интересные библиотеки, функции, советы по написанию кода. Подписывайся, чтобы через пару недель чувствовать себя как рыба в воде! Просто IT-книги - тысячи бесплатных книг по всем языкам программирования, благодаря которым ты прокачаешь свои скиллы на максимум.

© Telegram-site 2018-2026

Сайт про Telegram каналы(неофициальный) | Почта для связи: [email protected]