Работа с YouTube API на языке R
Друзья, этот год у меня выдался очень плодотворным на разработку новых пакетов. Рад представить вам
Основные функции пакета rytstat
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
Преимущества пакета rytstat
Если ранее вы уже задавались вопросом сбора данных из YouTube, то наверняка находили пакеты
● Проблема
● Проблема
●
● Для авторизации и работы с YouTube API
● OAuth клиент, который в
Установка пакета
Установить
Ссылки:
- пока нет русскоязычной документации, но примеры кода можно посмотреть на сайте пакета
Друзья, этот год у меня выдался очень плодотворным на разработку новых пакетов. Рад представить вам
rytstat, интерфейс для взаимодействия со всеми доступными в YouTube API.Основные функции пакета rytstat
●
ryt_auth_configure() - конфигурация авторизации (для продвинутых пользователей);●
ryt_auth() - авторизация;●
ryt_get_channels() - получить информацию о вашем канале (YouTube Data API);●
ryt_get_channel_activities() - получить список активностей связанных с вашим каналом (YouTube Data API);●
ryt_get_videos() - получить список видео вашего канала (YouTube Data API);●
ryt_get_video_details() - получить детальную информацию по видео (YouTube Data API);●
ryt_get_playlists() - получить список плейлистов вашего канала (YouTube Data API);●
ryt_get_comments() - получить цепочку комментариев к видео (YouTube Data API);●
ryt_get_analytics() - получить аналитику (YouTube Analytics API);●
ryt_get_report_types() - получить доступные типы отчётов (YouTube Reporting API);●
ryt_create_job() - создать задание на генерацию отчётов (YouTube Reporting API);●
ryt_get_report_list() - получить список отчётов сгенерированных конкретным заданием (YouTube Reporting API);●
ryt_get_report_metadata() - получить метаданные отчёта (YouTube Reporting API)●
ryt_get_report() - загрузить данные конкретного отчёта (YouTube Reporting API);●
ryt_delete_job() - удалить задание на генерацию отчётов (YouTube Reporting API);Преимущества пакета rytstat
Если ранее вы уже задавались вопросом сбора данных из YouTube, то наверняка находили пакеты
tuber и youtubeAnalyticsR. И вполне логично вы можете спросить зачем понадобился rytstat, ниже я перечислю его преимущества.● Проблема
tuber заключается в том, что он работает только с YouTube Data API, и не позволяет запрашивать отчёты.● Проблема
youtubeAnalyticsR в том, что он работает только с YouTube Analytics API, и не позволяет запрашивать список объектов для фильтрации данных.●
rytstat работает со всеми YouTube API, включая YouTube Reporting API, с которым не работают другие пакеты в принципе.● Для авторизации и работы с YouTube API
rytstat использует под капотом gargle, т.е. процесс авторизации будет вам знаком, если вы использовали пакеты: googlesheets4, googledrive, rgoogleads и т.д..● OAuth клиент, который в
rytstat используется по умолчанию уже прошел проверку Google и был одобрен, т.е. вы можете использовать встроенный OAuth клиент, не тратя время на создание собственного.Установка пакета
Установить
rytstat можно с CRAN и GitHub.
install.packages("rytstat")
devtools::install_github("selesnow/rytstat")
Ссылки:
- пока нет русскоязычной документации, но примеры кода можно посмотреть на сайте пакета
Быстрое преобразование разноформатного описания дат в тип даты
Новый пакет
●
А
Ссылки:
- пакет попал в топ 40 опубликованных на CRAN в ноябре 2021
- примеры кода взяты из виньетки "datefixR"
#заметки_по_R
Новый пакет
datefixR состоит всего из двух функций: fix_date() и fix_dates(), и позволяет быстро преобразовать введённые пользователями даты в разном формате, в объекты типа даты в R.●
fix_date() - работает со скалярами:
library(datefixR)
fix_date("01 02 2014")
#> [1] "2014-02-01"
А
fix_dates() предназначена для обработки столбцов таблицы:
df <- data.frame(
some.dates = c('02/05/92', '01-04-2020', '1996/05/01', '2020-05-01', '02-04-96'),
some.more.dates = c('01 03 2015', '02/05/00' ,'01/05/1990', '03-Dec-2012', '02 April 2020')
)
df
some.dates some.more.dates
1 02/05/92 01 03 2015
2 01-04-2020 02/05/00
3 1996/05/01 01/05/1990
4 2020-05-01 03-Dec-2012
5 02-04-96 02 April 2020
# корректируем дату
fix_dates(
df = df,
col.names = c("some.dates", "some.more.dates")
)
some.dates some.more.dates
1 1992-05-02 2015-03-01
2 2020-04-01 2000-05-02
3 1996-05-01 1990-05-01
4 2020-05-01 2012-12-03
5 1996-04-02 2020-04-02
Ссылки:
- пакет попал в топ 40 опубликованных на CRAN в ноябре 2021
- примеры кода взяты из виньетки "datefixR"
#заметки_по_R
Реализация ООП для работы с базами данных в R
В R не особо распространена Объектно-Ориентированная Парадигма программирования, и работа с базами данных не исключение. Классический подход для работы с базами данных в R предоставляет пакет
Тем не менее, для работы с базой данных ООП бывает очень удобным, новый пакет
Ниже пример работы с БД с помощью
- Пакет
- README пакета
- статья "Взаимодействие R с базами данных на примере Microsoft SQL Server и других СУБД", в статью уже добавил информаций про
#заметки_по_R
В R не особо распространена Объектно-Ориентированная Парадигма программирования, и работа с базами данных не исключение. Классический подход для работы с базами данных в R предоставляет пакет
DBI (DataBase Interface), я о нём подробно рассказывал в статье "Взаимодействие R с базами данных на примере Microsoft SQL Server и других СУБД".Тем не менее, для работы с базой данных ООП бывает очень удобным, новый пакет
rocker реализует взаимодействие с СУБД через R6 классы.Ниже пример работы с БД с помощью
DBI:А теперь перепишем его на ООП с помощью
library(DBI)
library(RSQLite)
# DBI
## Загрузка драйвера
drv <- SQLite()
## Тест соединения
dbCanConnect(
drv = drv,
dbname = ":memory:"
)
#> [1] TRUE
## Открываем соединение
con <- dbConnect(
drv = drv,
dbname = ":memory:"
)
## Создаём таблицу
dbWriteTable(con, "mtcars", mtcars)
## Получить результат запроса
res <- dbGetQuery(con, "SELECT * FROM mtcars;")
## Закрыть соединение
dbDisconnect(con)
## Отключить драйвер
dbUnloadDriver(drv)
rocker:Ссылки:
library(rocker)
# R6 классы
## Создание объекты базы данных
db <- rocker::newDB(verbose = FALSE)
## Настройка параметров соединения
db$setupDriver(
drv = RSQLite::SQLite(),
dbname = ":memory:"
)
## Тест соединения
db$canConnect()
#> [1] TRUE
## Открыть соединение
db$connect()
## Создаём таблицу
db$writeTable("mtcars", mtcars)
## Получить результат запроса
db$getQuery("SELECT * FROM mtcars;")
## Закрыть соединение
db$disconnect()
## Отключить драйвер
db$unloadDriver()
- Пакет
rocker попал в топ 40 опубликованных на CRAN в ноябре 2020- README пакета
- статья "Взаимодействие R с базами данных на примере Microsoft SQL Server и других СУБД", в статью уже добавил информаций про
rocker.#заметки_по_R
👍1
Прощай 2021, следующая станция 2022
Конечно подведение итогов года это банальщина, от которой многих тошнит. Тем не менее полезно взглянуть назад, посмотреть, что было сделано, подумать о будущих планах, и перезапуститься.
Опубликовал у себя в блоге итоги уходящего 2021 и поделился ближайшими планами на 2022.
Содержание:
● Новые пакеты
● Обновление старых пакетов
● rvkstat
● rmytarget
● rfacebookstat
● Пакеты ставшие официальными клиентами к API
● Книга «Язык R для интернет маркетинга»
● Курс «Циклы и функционалы в языке R»
● Заключение
Конечно подведение итогов года это банальщина, от которой многих тошнит. Тем не менее полезно взглянуть назад, посмотреть, что было сделано, подумать о будущих планах, и перезапуститься.
Опубликовал у себя в блоге итоги уходящего 2021 и поделился ближайшими планами на 2022.
Содержание:
● Новые пакеты
● Обновление старых пакетов
● rvkstat
● rmytarget
● rfacebookstat
● Пакеты ставшие официальными клиентами к API
● Книга «Язык R для интернет маркетинга»
● Курс «Циклы и функционалы в языке R»
● Заключение
Итоги года по R4marketing по версии TGStat
Друзья, до нового 2022 года остаются считанные часы, а у кого-то он уже наступил (привет моей исторической родине Дальнему Востоку).
2021 год для многих был годом надежд, по большей степени связанных с завершением пандемии. Мы постепенно привыкаем к изменившемуся миру, и он оказался не таким уж и ужасным как по началу казалось.
Коротко о том, что было сделано мной в 2021:
- Написал и опубликовал в CRAN 7 новых пакетов;
- Наконец разобрался с некоторыми API Google (rgoogleads и rytstat являются тому подтверждением);
- Начал работу над полноценным бумажным изданием книги “Язык R для интернета маркетинга”, на данный момент готово порядка 70% книги, следите за анонсами;
- Опубликовал 9 новых статей;
- Записал и опубликовал 11 видео уроков на своём YouTube канале;
- Телеграм канал показал рекордный за всё время рост по количеству новых подписчиков, за год +1379, т.е. вырос почти на половину относительно 1 января 2021 года. Спасибо вам!
В ближайших планах:
- Публикация нескольких очень полезных переводов на Хабре (январь, февраль);
- Публикация бесплатного курса “Циклы и функционалы в языке R”, сам курс будет опубликован 10 марта 2022, но видео будут появляться последовательно в январе - марте;
- Завершение работы над книгой “Язык R для интернет маркетинга”, надеюсь до лета справлюсь.
———————
Друзья, здоровья, вдохновения, наконец путешествий, в Новом 2022 году!
———————
И небольшой праздничный график (результат его работы на изображении к посту):
- код подсмотрел тут.
2021 год для многих был годом надежд, по большей степени связанных с завершением пандемии. Мы постепенно привыкаем к изменившемуся миру, и он оказался не таким уж и ужасным как по началу казалось.
Коротко о том, что было сделано мной в 2021:
- Написал и опубликовал в CRAN 7 новых пакетов;
- Наконец разобрался с некоторыми API Google (rgoogleads и rytstat являются тому подтверждением);
- Начал работу над полноценным бумажным изданием книги “Язык R для интернета маркетинга”, на данный момент готово порядка 70% книги, следите за анонсами;
- Опубликовал 9 новых статей;
- Записал и опубликовал 11 видео уроков на своём YouTube канале;
- Телеграм канал показал рекордный за всё время рост по количеству новых подписчиков, за год +1379, т.е. вырос почти на половину относительно 1 января 2021 года. Спасибо вам!
В ближайших планах:
- Публикация нескольких очень полезных переводов на Хабре (январь, февраль);
- Публикация бесплатного курса “Циклы и функционалы в языке R”, сам курс будет опубликован 10 марта 2022, но видео будут появляться последовательно в январе - марте;
- Завершение работы над книгой “Язык R для интернет маркетинга”, надеюсь до лета справлюсь.
———————
Друзья, здоровья, вдохновения, наконец путешествий, в Новом 2022 году!
———————
И небольшой праздничный график (результат его работы на изображении к посту):
library(dplyr)Ссылки:
library(ggplot2)
ornaments = data.frame(
row = rep(1:8, (8:1)*seq(3, 2, length.out = 8))
) %>%
mutate(x = row + runif(nrow(.), -.5, 0),
size = runif(nrow(.), 3, 8),
color = sample(c("red2", "gold", "skyblue1"), nrow(.), T)) %>%
mutate(y = runif(nrow(.), -9+row, 9-row))
ggplot() +
geom_rect(aes(xmin = 0, ymin = -1, xmax = 8, ymax = 1), fill = "tan4") +
geom_col(aes(1:8, 8:1), fill = "darkgreen") +
geom_col(aes(1:8, -8:-1), fill = "darkgreen") +
geom_point(aes(9, 0), color = "gold", size = 10, shape = 8, stroke = 3) +geom_point(aes(x, y, color = I(color), size = I(size)), ornaments) +
coord_flip() +
theme_void()
- код подсмотрел тут.
😁3🔥2👍1🎉1
Утиные истории со стрелами на паркете
Начинаем год шикарной статьёй про arrow и duck db.
В этой статье сошлись 3 технологии обработки/хранения данных и каждая по своему примечательна, но обо всем по порядку.
Содержание:
● Утверждение 1. Паркет это хорошо (особенно в сравнении с ламинатом)
● Утверждение 2. Arrow - прекрасен, а pandas - не очень.
● А при чём тут вообще утки?
#статьи_по_R
Начинаем год шикарной статьёй про arrow и duck db.
В этой статье сошлись 3 технологии обработки/хранения данных и каждая по своему примечательна, но обо всем по порядку.
Содержание:
● Утверждение 1. Паркет это хорошо (особенно в сравнении с ламинатом)
● Утверждение 2. Arrow - прекрасен, а pandas - не очень.
● А при чём тут вообще утки?
#статьи_по_R
👍6
Пакет для добавления глосс в rmarkdown
Глосси́рование (англ. Interlinear gloss) — это способ оформления текста, предполагающий наличие кратких пояснений к нему, которые помещаются в строчке между оригинальным текстом (или его транслитерацией) и переводом. Глоссы используются для того, чтобы читателю было ясно, как именно соотносится текст и его перевод с точки зрения грамматики и семантики. (из википедии)
Теперь передаю слово автору пакета
Мой пакет позволяет делать лингвистические глоссы в html rmarkdown документе, а потом автоматически собирает их в список глосс. При этом значения глосс не придется писать руками: пакет сам их расшифрует.
Установка:
- документация пакета здесь
- предложения, благодарности и пожелания направлять автору
#новости_и_релизы_R
Глосси́рование (англ. Interlinear gloss) — это способ оформления текста, предполагающий наличие кратких пояснений к нему, которые помещаются в строчке между оригинальным текстом (или его транслитерацией) и переводом. Глоссы используются для того, чтобы читателю было ясно, как именно соотносится текст и его перевод с точки зрения грамматики и семантики. (из википедии)
Теперь передаю слово автору пакета
lingglosses @aGricolaMZ.Мой пакет позволяет делать лингвистические глоссы в html rmarkdown документе, а потом автоматически собирает их в список глосс. При этом значения глосс не придется писать руками: пакет сам их расшифрует.
Установка:
Ссылки:
install.packages("remotes")
remotes::install_github("agricolamz/lingglosses")
# или из CRAN
install.packages('lingglosses')
- документация пакета здесь
- предложения, благодарности и пожелания направлять автору
#новости_и_релизы_R
👍1
Основы программирования на R. Курс для новичков в разработке
Не смотря на название статьи, это совсем не курс, но вводная статья, в то, что такое R с планом его изучения.
Для того чтобы правильно изучить язык программирования R, у вас должен быть четкий структурированный план действий, что и за чем вы должны делать. У нас есть такой план действий и мы им делимся, чтобы вы смогли спокойно постичь основы программирования на R.
Содержание:
- Основы программирования на R
- R и его конкуренты
- Преимущества R
- Заключения
#статьи_по_R
Не смотря на название статьи, это совсем не курс, но вводная статья, в то, что такое R с планом его изучения.
Для того чтобы правильно изучить язык программирования R, у вас должен быть четкий структурированный план действий, что и за чем вы должны делать. У нас есть такой план действий и мы им делимся, чтобы вы смогли спокойно постичь основы программирования на R.
Содержание:
- Основы программирования на R
- R и его конкуренты
- Преимущества R
- Заключения
#статьи_по_R
Видео курс "Введение в dplyr 1.0.0"
Ещё весной 2020 года я записал серию видео уроков по статьям Хедли Викхема, которые предшествовали релизу
Наконец у меня добрались руки собрать эти уроки в единый мини курс, который будет полезен тем, кто уже имеет базовые навыки работы в
Содержание:
- Функции
- Функция
- Перебор строк функцией
- Обновлённая функция
- Добавление, изменение и удаление строк дата фрейма через
#курсы_по_R
Ещё весной 2020 года я записал серию видео уроков по статьям Хедли Викхема, которые предшествовали релизу
dplyr 1.0.0, но в тот момент оформление этого материала закончилось на том, что я просто собрал все видео в один плейлист на YouTube.Наконец у меня добрались руки собрать эти уроки в единый мини курс, который будет полезен тем, кто уже имеет базовые навыки работы в
dplyr, но релиз версии 1.0.0 по какой-то причине пропустил, а в нём было много полезного.Содержание:
- Функции
select(), rename_with() и relocate()- Функция
across()- Перебор строк функцией
rowwise()- Обновлённая функция
summarise()- Добавление, изменение и удаление строк дата фрейма через
rows_*()#курсы_по_R
👍8
Добро пожаловать в мир продвинутого Python программирования: @pro_python_code
В канале вы найдет :
📃Статьи ,
📚Книги
👨💻 Код
🔗Ссылки
и много другой полезной информации
#Python #Django
#Machine Learning #DataScience
#Django #Advancedresearch
1 канал вместо тысячи учебников и курсов, подписывайтесь: 👇👇👇
🐍 @pythonl
В канале вы найдет :
📃Статьи ,
📚Книги
👨💻 Код
🔗Ссылки
и много другой полезной информации
#Python #Django
#Machine Learning #DataScience
#Django #Advancedresearch
1 канал вместо тысячи учебников и курсов, подписывайтесь: 👇👇👇
🐍 @pythonl
👍1
релиз getProxy 1.13
Что нового:
● С сентября многие столкнулись с проблемой SSL сертификатов, ранее
● Ранее пакет искал прокси только в двух сервисах, теперь добавлен третий proxy-list.download.
● Была полностью переписана логика подбора сервиса для запроса прокси, ранее по очереди использовались лимиты каждого сервера, теперь пакет делает 10 попыток рандомно опрашивая сервисы.
Ссылки:
- видео урок по работе с getPtoxy
- статья "Как обойти блокировку API запрещенных сервисов с помощью скриптов R"
#новости_и_релизы_R
getProxy - пакет, который помогает обойти блокировку, например при работе с API заблокированных в вашей стране сервисов, для Украины это Вконтакте, Яндекс и так далее. getProxy состоит всего из одной, одноимённой функции, запрашивает из API нескольких сервисов бесплатный прокси и перенаправляет через него ваше интернет соединение.Что нового:
● С сентября многие столкнулись с проблемой SSL сертификатов, ранее
getProxy под капотом использовал RCurl, версия 1.13 была полностью переписана на httr, и проблем с SSL сертификатом больше нет.● Ранее пакет искал прокси только в двух сервисах, теперь добавлен третий proxy-list.download.
● Была полностью переписана логика подбора сервиса для запроса прокси, ранее по очереди использовались лимиты каждого сервера, теперь пакет делает 10 попыток рандомно опрашивая сервисы.
Ссылки:
- видео урок по работе с getPtoxy
- статья "Как обойти блокировку API запрещенных сервисов с помощью скриптов R"
#новости_и_релизы_R
🔥2
Как не использовать циклы в R: Разбираем пакет purrr
В прошлом видео мы начали разбор темы "Как не использовать циклы в R", и рассмотрели функции семейства
Тайм коды:
00:00 Вступление
00:57 Какие преимущества даёт пакет purrr
02:15 Какие семейства функций есть в purrr
03:29 Семейство функций map
04:26 Основные аргументы функций пакета purrr
05:20 Работа с функциями семейства map
08:23 Пример сравнения map() с циклом for
08:56 Функции mapdfr(), mapdfc()
13:01 Итерирование сразу по нескольким объектам, семейства функций map2 и pmap
15:01 Синтаксис формул в purrr
20:05 Функции семейства walk
22:31 Функции keep() и discard()
26:27 Итерация по функциям с помощью функций семейства invoke
29:12 Функции reduce() и accumulate()
34:23 Заключение
Ссылки:
- видео
- пример кода
#видео_уроки_по_R
В прошлом видео мы начали разбор темы "Как не использовать циклы в R", и рассмотрели функции семейства
apply(). Но есть и более продвинутый их аналог, который предоставляет вам пакет purrr. В этом видео уроке мы рассмотрим большую часть функционала purrr.Тайм коды:
00:00 Вступление
00:57 Какие преимущества даёт пакет purrr
02:15 Какие семейства функций есть в purrr
03:29 Семейство функций map
04:26 Основные аргументы функций пакета purrr
05:20 Работа с функциями семейства map
08:23 Пример сравнения map() с циклом for
08:56 Функции mapdfr(), mapdfc()
13:01 Итерирование сразу по нескольким объектам, семейства функций map2 и pmap
15:01 Синтаксис формул в purrr
20:05 Функции семейства walk
22:31 Функции keep() и discard()
26:27 Итерация по функциям с помощью функций семейства invoke
29:12 Функции reduce() и accumulate()
34:23 Заключение
Ссылки:
- видео
- пример кода
#видео_уроки_по_R
YouTube
Как не использовать циклы в R: Разбираем пакет purrr
В этом видео мы продолжаем изучать функционалы в языке R и разберём возможности пакета purrr.
В видео демонстрируются все основные семейства функций purrr:
- map_*()
- map2_*()
- pmap_*()
- walk()
- keep() и discard()
- reduce() и accumulate()
|=======…
В видео демонстрируются все основные семейства функций purrr:
- map_*()
- map2_*()
- pmap_*()
- walk()
- keep() и discard()
- reduce() и accumulate()
|=======…
👍5
Как добавить ещё одну панель кода в RStudio
Начиная с версии RStudio 2021.09.1 у нас появилась возможность полностью перенастроить интерфейс, добавив дополнительные столбцы с окнами, например для дополнительного окна Source. Пример того, как это выглядит можно посмотреть на изображении к посту.
Как добавить или удалить новый столбец с окнами
Tools > Global Options > Pane Layout > Add Columns / Remove Column
Посмотреть скрин можно тут.
Ссылки:
- узнал об этом обновлении из статьи "R Studio with great new feature – multiple code panes"
#заметки_по_R
Начиная с версии RStudio 2021.09.1 у нас появилась возможность полностью перенастроить интерфейс, добавив дополнительные столбцы с окнами, например для дополнительного окна Source. Пример того, как это выглядит можно посмотреть на изображении к посту.
Как добавить или удалить новый столбец с окнами
Tools > Global Options > Pane Layout > Add Columns / Remove Column
Посмотреть скрин можно тут.
Ссылки:
- узнал об этом обновлении из статьи "R Studio with great new feature – multiple code panes"
#заметки_по_R
Небольшой, но довольно полезный плейлист от Александра Королёва.
Полезен он будет тем, кто планирует освоить разработку собственных пакетов.
Содержание:
1. Начало работы с R на RStudio. Проект на языке R или пакет на языке R.
2. Создание проекта R package вместе с Unit tests и documentation.
3. Запуск и отладка R кода для проекта R Package
#видео_уроки_по_R
Полезен он будет тем, кто планирует освоить разработку собственных пакетов.
Содержание:
1. Начало работы с R на RStudio. Проект на языке R или пакет на языке R.
2. Создание проекта R package вместе с Unit tests и documentation.
3. Запуск и отладка R кода для проекта R Package
#видео_уроки_по_R
👍3
Ежегодная перекличка, из какого вы региона?
Anonymous Poll
29%
Россия. Москва
12%
Россия. Санкт-Петербург
24%
Россия. Регионы
11%
Украина. Киев
10%
Украина. Регионы
5%
Белоруссия
2%
Казахстан
7%
Другой регион
👍1
Вебинар введение в Язык R
Автор: Alexanyan Andron (SF Education)
Вебинар довольно неплохой, с освещением основных возможностей и сильных сторон R, в общем рекомендую для новичков, и тех кто хочет узнать о возможностях R.
Тезисы:
● Назначение языка R
● Почему стоит использовать язык R для анализа данных
● Преимущества языка R
● Знакомство с Rmarkdown
● Обзор базового функционала R
● Манипуляция данными с помощью
● Создание HTML таблиц с помощью пакета
● Построение графиков с помощью
#вебинары_по_R
Автор: Alexanyan Andron (SF Education)
Вебинар довольно неплохой, с освещением основных возможностей и сильных сторон R, в общем рекомендую для новичков, и тех кто хочет узнать о возможностях R.
Тезисы:
● Назначение языка R
● Почему стоит использовать язык R для анализа данных
● Преимущества языка R
● Знакомство с Rmarkdown
● Обзор базового функционала R
● Манипуляция данными с помощью
dplyr● Создание HTML таблиц с помощью пакета
gt● Построение графиков с помощью
ggplot2#вебинары_по_R
Перевод шпаргалок по tidyverse (PDF)
● Импорт данных (readr)
● Трансформация данных с dplyr
● Дата и время с lubridate
● Применение функций с purrr
#шпаргалки_по_R
● Импорт данных (readr)
● Трансформация данных с dplyr
● Дата и время с lubridate
● Применение функций с purrr
#шпаргалки_по_R
👍7🔥2
Есть ли зависимость между религиозными предпочтениями и количеством часов работы в месяц?
Пример анализа данных с использованием R.
Целью проекта является обобщение зарубежной и отечественной литературы влияния религиозных предпочтений на социально-экономические предпочтения людей, разработка методов исследования религиозной идентичности человека и взаимосвязи между ними и количеством рабочих часов человека в месяц.
Содержание:
● Вступление
● Обзор литературы и выдвижение гипотезы
● Описание данных
● Методы исследования
● Результаты
#статьи_по_R
Пример анализа данных с использованием R.
Целью проекта является обобщение зарубежной и отечественной литературы влияния религиозных предпочтений на социально-экономические предпочтения людей, разработка методов исследования религиозной идентичности человека и взаимосвязи между ними и количеством рабочих часов человека в месяц.
Содержание:
● Вступление
● Обзор литературы и выдвижение гипотезы
● Описание данных
● Методы исследования
● Результаты
#статьи_по_R
👍4
Кеширование вызовов функций в R
Кэширование функций позволяет кэшировать возвращаемые значения функций в зависимости от аргументов. Это может помочь сэкономить время при работе с вводом/выводом на повторяющихся данных при длительных вычислениях. Т.е. при вызове функции запоминаются значения аргументов, и полученный результат, и в случае повторного вызова функции с теми же параметрами, результат вычислений будет считан из кеша, и вам не потребуется ждать пока пройдут все вычисления повторно.
Это может быть полезно например при обращении к справочникам по API, если данные в этих справочниках меняются не особо часто. Вряд ли вы каждые 3 минуты запускаете новые рекламные кампании.
В R кеширование функций в удобном виде позволяет реализовать пакет
Простейший пример кеширования функции
Что бы кешировать любую функцию, используйте
Вы можете управлять такими параметрами кеширования как:
● место физического хранения кеша
● длительность хранение кеша
● максимально допустимый размер кеша
По умолчанию кеш сохраняется в оперативной памяти функцией
Дополнительные аргументы функций
- Примеры кода взяты из README пакета
Кэширование функций позволяет кэшировать возвращаемые значения функций в зависимости от аргументов. Это может помочь сэкономить время при работе с вводом/выводом на повторяющихся данных при длительных вычислениях. Т.е. при вызове функции запоминаются значения аргументов, и полученный результат, и в случае повторного вызова функции с теми же параметрами, результат вычислений будет считан из кеша, и вам не потребуется ждать пока пройдут все вычисления повторно.
Это может быть полезно например при обращении к справочникам по API, если данные в этих справочниках меняются не особо часто. Вряд ли вы каждые 3 минуты запускаете новые рекламные кампании.
В R кеширование функций в удобном виде позволяет реализовать пакет
memoise, построенный на основе пакета cachem.Простейший пример кеширования функции
Что бы кешировать любую функцию, используйте
memoise().Используем кешированную функцию:
library(memoise)
f <- function(x) {
Sys.sleep(1)
mean(x)
}
mf <- memoise(f)
Конфигурация кеширования
# первый запуск проводит расчёты и запоминает результат
system.time(mf(1:10))
#> user system elapsed
#> 0.002 0.000 1.003
# далее мы читаем результат из кеша
system.time(mf(1:10))
#> user system elapsed
#> 0.000 0.000 0.001
Вы можете управлять такими параметрами кеширования как:
● место физического хранения кеша
● длительность хранение кеша
● максимально допустимый размер кеша
По умолчанию кеш сохраняется в оперативной памяти функцией
cachem::cache_mem(), и хранится только в течении текущей R сессии. Но вы можете использовать функцию cachem::cache_disk(), и хранить кеш на жестком диске.Дополнительные аргументы функций
cachem::cache_mem() и cachem::cache_disk() позволяют управлять размером кеша, директорией хранения кеша и некоторыми другими параметрами.Ссылки:
# Ограничиваем длительность хранения кеша 15 минутами
cm <- cachem::cache_mem(max_age = 15 * 60)
mf <- memoise(f, cache = cm)
# Хранить кеш внутри каталога "R-myapp" на уровне пользователя
# папка "C:/Users/Username/AppData/Local/R-myapp/R-myapp/Cache"
cd <- cachem::cache_disk(rappdirs::user_cache_dir("R-myapp"))
mf <- memoise(f, cache = cd)
- Примеры кода взяты из README пакета
memoise
#заметки_по_R👍1