knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
fedstatAPIr представляет собой неофициальное API для загрузки данных с fedstat.ru (система ЕМИСС Росстата) с заданными фильтрами.
Пакет позволяет сэкономить ⏳ и нервы 😡 при работе с бесконечно падающим ЕМИСС через автоматическое повторение неотвеченных запросов и сохранение ранее использованных настроек фильтров.
На данный момент пакет доступен только на R, Вы можете загрузить fedstatAPIr из CRAN, используя следующую команду в R:
install.packages("fedstatAPIr")
Версия для разработки может быть загружена следующей командой:
# install.packages("devtools") devtools::install_github("DenchPokepon/fedstatAPIr")
Загрузим данные по инфляции к предыдущему месяцу и к соотв. месяцу прошлого года за январь 2023 года по всем товарам и услугам только по России
Возьмем номер индикатора из URL веб страницы с данными https://fedstat.ru/indicator/31074
library(fedstatAPIr) data <- fedstat_data_load_with_filters( indicator_id = "31074", filters = list( "Классификатор объектов административно-территориального деления (ОКАТО)" = "Российская Федерация", "Виды показателя" = c( "К соответствующему периоду предыдущего года", "К предыдущему месяцу" ), "Период" = "Январь", "Год" = "2023", "Виды товаров и услуг" = "*" ) )
knitr::kable(head(data[, c("EI", "ObsValue", "PERIOD", "Time", "s_POK", "s_grtov", "s_OKATO", "s_OKATO_code", "s_POK_code", "s_grtov_code")]))
Необходимо учитывать, что ЕМИСС часто лагает, поэтому не стоит загружать больше 500 тысяч строк за один запрос. В случае большой выгрузки желательно разбить запросы на подзапросы, в ином случае ЕМИСС может игнорировать такие большие запросы
Фильтры задаются в форме JSON:
{ "Название поля фильтра 1": ["Значение фильтра 1", "Значение фильтра 2"], "Название поля фильтра 2": ["Значение фильтра 1", "Значение фильтра 2"], ... }
Где Название поля фильтра 1
может быть, например Год
, а Значение фильтра 1
для этого поля 2023
.
Поля и значения фильтров берутся прямо из названий фильтров на fedstat.ru, в
filters
они должны быть такими же. Однако разные регистры фильтров и лишние пробелы не сломают фильтрацию.
Доступны следующие специальные значения фильтров:
Можно не указывать какой-то фильтр вообще, тогда по умолчанию будет использоваться *.
Библиотека стремится поддерживать загрузку всех доступных на fedstat индикаторов, на данный момент поддерживается абсолютное большинство, но в некоторых случаях специальных индикаторов могут быть непредвиденные баги.
Внутри пакета доступна база данных всех индикаторов, по которым представлены данные на fedstat.ru.
Она содержится в переменной fedstat_indicators_names_database
.
Все доступные фильтры каждого индикатора можно посмотреть через вызов функции
data_ids <- fedstat_get_data_ids("31074")
Результат выглядит следующим образом
knitr::kable(head(data_ids[, c("filter_field_id", "filter_field_title", "filter_value_id", "filter_value_title", "filter_field_object_ids")]))
Также можно посмотреть полный внутренний словарь (соотношения кодов и человеческих названий сущностей) через задание аргумента return_type = dictionary
library(fedstatAPIr) data <- fedstat_data_load_with_filters( indicator_id = "31074", filters = list( "Классификатор объектов административно-территориального деления (ОКАТО)" = "Российская Федерация", "Виды показателя" = c( "К соответствующему периоду предыдущего года", "К предыдущему месяцу" ), "Период" = "Январь", "Год" = "2023", "Виды товаров и услуг" = "*" ), return_type = "dictionary" )
Функция fedstat_data_load_with_filters
является оберткой из отдельных функций,
которые отвечают за:
fedstat_get_data_ids
);filters
с учетом специальных значений и стандартных фильтров (fedstat_data_ids_filter
);fedstat_post_data_ids_filtered
);fedstat_parse_sdmx_to_table
).По каждой функции доступна подробная документация, которую можно вызвать в R
через функцию help()
. Например help("fedstat_data_load_with_filters")
или
?fedstat_data_load_with_filters
.
Загрузим те же данные, используя каждую функцию отдельно
data_ids <- fedstat_get_data_ids("31074") # Можеть занимать много времени из-за лагов # fedstat, для скорости лучше всего кэшировать или даже записывать в базу данных, # более подробно по этому моменту в документации data_ids_filtered <- data_ids %>% fedstat_data_ids_filter( filters = list( "Классификатор объектов административно-территориального деления (ОКАТО)" = "Российская Федерация", "Виды показателя" = c( "К соответствующему периоду предыдущего года", "К предыдущему месяцу" ), "Период" = "Январь", "Год" = "2023", "Виды товаров и услуг" = "*" ) ) data_sdmx_parsed <- data_ids_filtered %>% fedstat_post_data_ids_filtered(data_format = "sdmx") %>% fedstat_parse_sdmx_to_table() data_xls_binary <- data_ids_filtered %>% fedstat_post_data_ids_filtered(data_format = "excel") # также можем загружать excel writeBin(data_xls_binary, "data.xls") # также можем записать в xls файл. # Его формат зависит от колонки filter_field_object_ids в data_ids, можно изменять самостоятельно
Вопросы можно писать на почту deniskrylovvit@gmail.com
Буду рад Вашему вкладу в проект. Перед коммитом изменений необходимо пройти R CRAN check --as-cran.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.