Пакет для проекта Кассандра :)

Прогнозирование российских макро-экономических показателей.

Организация работы

Есть три кита, для которых заведено три отдельных репозитория в рамках проекта.

Кит “Данные”

Репозиторий данных. В папке raw по дням скачивания содержатся отконвертированные из ужаса .csv файлы.

Кит “Модели”

Репозиторий моделей.

Модели по дням разработки.

Кит “Пакет”

Репозиторий пакета.

Черепаха Публикаций

В неофициальном блоге хорошо бы больше инструкций и примеров и дашбордик с прогнозами :)

Установка пакета kassandr

devtools::install_github("kassandra-ru/kassandr")

Скачивание актуальных данных

library(docxtractr) # для конвертации doc
library(kassandr)
library(tidyverse)
library(rio)

Сначала затягиваем репозиторий с данными на жёсткий диск.

Типичный пример скрипта, скачивающего свежие данные.

Смотрим, что скачивает kassandr:

watchdog
##                                                                    url
## 1           http://www.gks.ru/free_doc/new_site/prices/potr/I_ipc.xlsx
## 2                 http://www.gks.ru/free_doc/new_site/vvp/kv/tab5a.xls
## 3                 http://www.gks.ru/free_doc/new_site/vvp/kv/tab9a.xls
## 4                  http://www.gks.ru/free_doc/new_site/vvp/kv/tab9.xls
## 5                 http://www.gks.ru/free_doc/new_site/vvp/kv/tab6b.xls
## 6                           http://www.cbr.ru/hd_base/mkr/mkr_monthes/
## 7    http://www.gks.ru/free_doc/new_site/population/urov/urov_12kv.doc
## 8       http://www.gks.ru/bgd/regl/b18_02/IssWWW.exe/Stg/d010/1-08.doc
## 9       http://www.gks.ru/bgd/regl/b18_02/IssWWW.exe/Stg/d010/1-03.doc
## 10      http://www.gks.ru/bgd/regl/b18_02/IssWWW.exe/Stg/d010/1-11.doc
## 11    http://www.cbr.ru/vfs/statistics/credit_statistics/M2-M2_SA.xlsx
## 12                              http://www.cbr.ru/hd_base/mrrf/mrrf_m/
## 13              http://www.gks.ru/storage/mediabank/ind_okved2(1).xlsx
## 14 https://www.cbr.ru/vfs/statistics/credit_statistics/trade/trade.xls
## 15   http://www.gks.ru/bgd/regl/b19_02/IssWWW.exe/Stg/d010/1-06-0.xlsx
## 16                                                                    
## 17                 https://gks.ru/storage/mediabank/ind-baza-2018.xlsx
##              file_raw         file_main                 processing univariate
## 1          i_ipc.xlsx         i_ipc.csv         convert_i_ipc_xlsx       TRUE
## 2           tab5a.xls         tab5a.csv          convert_tab5a_xls       TRUE
## 3           tab9a.xls         tab9a.csv          convert_tab9a_xls       TRUE
## 4            tab9.xls          tab9.csv           convert_tab9_xls       TRUE
## 5           tab6b.xls         tab6b.csv          convert_tab6b_xls       TRUE
## 6       lendrate.html      lendrate.csv           convert_lendrate      FALSE
## 7       urov_12kv.doc     urov_12kv.csv      convert_urov_12kv_doc      FALSE
## 8            1-08.doc          1-08.csv           convert_1_nn_doc       TRUE
## 9            1-03.doc          1-03.csv           convert_1_nn_doc       TRUE
## 10           1-11.doc          1-11.csv           convert_1_nn_doc       TRUE
## 11      m2-m2_sa.xlsx      m2-m2_sa.csv      convert_m2_m2_sa_xlsx       TRUE
## 12      reserves.html      reserves.csv           convert_reserves      FALSE
## 13    ind_okved2.xlsx    ind_okved2.csv    convert_ind_okved2_xlsx      FALSE
## 14          trade.xls         trade.csv          convert_trade_xls      FALSE
## 15        1-06-0.xlsx        invest.csv        convert_1_06_0_xlsx       TRUE
## 16                     exchangerate.csv         parse_exchangerate       TRUE
## 17 ind_baza_2018.xlsx ind_baza_2018.csv convert_ind_baza_2018_xlsx      FALSE
##    frequency
## 1         12
## 2          4
## 3          4
## 4          4
## 5          4
## 6         12
## 7         12
## 8         12
## 9         12
## 10        12
## 11        12
## 12        12
## 13        NA
## 14        12
## 15         4
## 16        NA
## 17        NA
##                                                                                    comment
## 1                                      Monthly chained CPI from Russian Statistical Agency
## 2                                          Gross domestic product quarterly current prices
## 3                                        Deflator index in percent to the previous quarter
## 4                             Deflator index in percent to the previous quarter early data
## 5                                             Gross domestic product quarterly 2016 prices
## 6                                           Monthly lending rate multiple duration periods
## 7  Real disposable income percentage to previous period and to same month of previous year
## 8                                                                       Agricultural index
## 9                                                                             Construction
## 10                                                                                  Budget
## 11                                                                  Seasonally adjusted M2
## 12                                                                  Reserves data from cbr
## 13                                                             Industrial production index
## 14                                                                        Trade statistics
## 15                                                                Fixed capital investment
## 16                                                                  Exchange rate from cbr
## 17                              Industrial production index, new edition, base year = 2018

При скачивании некоторых показателей используется конвертация .doc файлов. Чтобы она работала должен быть установлен libre office. И R должен знать как его найти.

info = Sys.info() # получаем информацию о системе

if (info[1] == "Linux") {
  set_libreoffice_path("/usr/bin/libreoffice")  # ubuntu or macos
  Sys.setenv(LD_LIBRARY_PATH = "/usr/lib/libreoffice/program/") # ubuntu protection against libreglo.so not found
}

if (info[1] == "Windows") {
  Sys.setenv("TAR" = "internal") # if install_github() fails on Windows OS
  set_libreoffice_path("C:/Program Files/LibreOffice/program/soffice.exe")  # windows
}

Далее всё просто:

path = "~/Downloads" # прописываем путь к папке, где хранятся данные
download_log_new = download_statistics(path, watchdog)

Смотрим, что корректно скачалось и конвертировалось:

download_log_new
##                                                                    url
## 1           http://www.gks.ru/free_doc/new_site/prices/potr/I_ipc.xlsx
## 2                 http://www.gks.ru/free_doc/new_site/vvp/kv/tab5a.xls
## 3                 http://www.gks.ru/free_doc/new_site/vvp/kv/tab9a.xls
## 4                  http://www.gks.ru/free_doc/new_site/vvp/kv/tab9.xls
## 5                 http://www.gks.ru/free_doc/new_site/vvp/kv/tab6b.xls
## 6                           http://www.cbr.ru/hd_base/mkr/mkr_monthes/
## 7    http://www.gks.ru/free_doc/new_site/population/urov/urov_12kv.doc
## 8       http://www.gks.ru/bgd/regl/b18_02/IssWWW.exe/Stg/d010/1-08.doc
## 9       http://www.gks.ru/bgd/regl/b18_02/IssWWW.exe/Stg/d010/1-03.doc
## 10      http://www.gks.ru/bgd/regl/b18_02/IssWWW.exe/Stg/d010/1-11.doc
## 11    http://www.cbr.ru/vfs/statistics/credit_statistics/M2-M2_SA.xlsx
## 12                              http://www.cbr.ru/hd_base/mrrf/mrrf_m/
## 13              http://www.gks.ru/storage/mediabank/ind_okved2(1).xlsx
## 14 https://www.cbr.ru/vfs/statistics/credit_statistics/trade/trade.xls
## 15   http://www.gks.ru/bgd/regl/b19_02/IssWWW.exe/Stg/d010/1-06-0.xlsx
## 16                                                                    
## 17                 https://gks.ru/storage/mediabank/ind-baza-2018.xlsx
##              file_raw         file_main                 processing univariate
## 1          i_ipc.xlsx         i_ipc.csv         convert_i_ipc_xlsx       TRUE
## 2           tab5a.xls         tab5a.csv          convert_tab5a_xls       TRUE
## 3           tab9a.xls         tab9a.csv          convert_tab9a_xls       TRUE
## 4            tab9.xls          tab9.csv           convert_tab9_xls       TRUE
## 5           tab6b.xls         tab6b.csv          convert_tab6b_xls       TRUE
## 6       lendrate.html      lendrate.csv           convert_lendrate      FALSE
## 7       urov_12kv.doc     urov_12kv.csv      convert_urov_12kv_doc      FALSE
## 8            1-08.doc          1-08.csv           convert_1_nn_doc       TRUE
## 9            1-03.doc          1-03.csv           convert_1_nn_doc       TRUE
## 10           1-11.doc          1-11.csv           convert_1_nn_doc       TRUE
## 11      m2-m2_sa.xlsx      m2-m2_sa.csv      convert_m2_m2_sa_xlsx       TRUE
## 12      reserves.html      reserves.csv           convert_reserves      FALSE
## 13    ind_okved2.xlsx    ind_okved2.csv    convert_ind_okved2_xlsx      FALSE
## 14          trade.xls         trade.csv          convert_trade_xls      FALSE
## 15        1-06-0.xlsx        invest.csv        convert_1_06_0_xlsx       TRUE
## 16                     exchangerate.csv         parse_exchangerate       TRUE
## 17 ind_baza_2018.xlsx ind_baza_2018.csv convert_ind_baza_2018_xlsx      FALSE
##    frequency
## 1         12
## 2          4
## 3          4
## 4          4
## 5          4
## 6         12
## 7         12
## 8         12
## 9         12
## 10        12
## 11        12
## 12        12
## 13        NA
## 14        12
## 15         4
## 16        NA
## 17        NA
##                                                                                    comment
## 1                                      Monthly chained CPI from Russian Statistical Agency
## 2                                          Gross domestic product quarterly current prices
## 3                                        Deflator index in percent to the previous quarter
## 4                             Deflator index in percent to the previous quarter early data
## 5                                             Gross domestic product quarterly 2016 prices
## 6                                           Monthly lending rate multiple duration periods
## 7  Real disposable income percentage to previous period and to same month of previous year
## 8                                                                       Agricultural index
## 9                                                                             Construction
## 10                                                                                  Budget
## 11                                                                  Seasonally adjusted M2
## 12                                                                  Reserves data from cbr
## 13                                                             Industrial production index
## 14                                                                        Trade statistics
## 15                                                                Fixed capital investment
## 16                                                                  Exchange rate from cbr
## 17                              Industrial production index, new edition, base year = 2018
##    access_date download_status processing_status
## 1   2020-06-30         success           success
## 2   2020-06-30         success           success
## 3   2020-06-30         success           success
## 4   2020-06-30         success           success
## 5   2020-06-30         success           success
## 6   2020-06-30         success           success
## 7   2020-06-30         success           success
## 8   2020-06-30         success           success
## 9   2020-06-30         success           success
## 10  2020-06-30         success           success
## 11  2020-06-30         success           success
## 12  2020-06-30         success           success
## 13  2020-06-30         success           success
## 14  2020-06-30         success           success
## 15  2020-06-30         success           success
## 16  2020-06-30            <NA>           success
## 17  2020-06-30         success           success
##                            hash_raw                        hash_main
## 1  9eb24c4a3aec114045f6f2b8323f1e57 5b7e26c129bfa1bf3a7a765279524cbb
## 2  92991231b04e6146c90654237e83aa53 4619c09e5c637dd4668ad7e4289da6aa
## 3  283a0ae528bb283b99c1d1d16720d782 e27d70dc05a64b62678f0bcbd99bb49f
## 4  77b735f84e1b848187c18c36d45b2a7a c7b32eeafb3f478080982da795fd8985
## 5  316f98edfe372e4d51f47da48875ace3 0db63ef9871175240d157acd5d60152d
## 6  462794eff08f10bd105e095f3934cc3c c195fc0b21fb2c30180d093a5d79efc9
## 7  8ffc6cc247d1106e64e3d6a3671d8c87 a3728d0c434454a0cdd20c706977ad37
## 8  603bfcc199bffafbe0269afa0524449b aaf668d17f19466bbeda62d6f92739dc
## 9  79f38760795ceb8ede4e0e69eca6c508 775406d5c38e02ff22c67f0d88ed5b1c
## 10 eed1162ebe3fa98840e42b8e7da35db5 ab566475f7cc4def35bc5a84cae2024f
## 11 b5e246786f74f92450f161cac263dfec e2e82ae03f326509d0de728fac2cdb7b
## 12 2cde1cbf9cd1fc183cb161dc521e3357 a9c5608de410f0eef76534bcc352bd0e
## 13 c8d103cd2c21879fc139daef90761d33 b874291aa8ba04861c99c9f0e0bd7ec8
## 14 bf1dcdc1743b5be9d9410e5fb6ba82aa 7998bfccee27b9efc16728dd576d7379
## 15 77bc0e03ffede902111dc075117d26ce 6a9c2a6e0fc842db016dd0018aaf8c3e
## 16                             <NA> c69704a566cce4666757842b69af9c33
## 17 820f7b461715e2e5f635ae4614e37ccd 65816a81701d042be27b8050e11e8b77

Исходные файлы добавляем в .gitignore

write_lines(na.omit(watchdog$file_raw), path = paste0(path_day, ".gitignore"))

Забрасываем обновлённые данные в репозиторий на гитхабе.

Добавление нового парсера

library(devtools)
library(usethis)
  1. Затягиваем актуальную версию пакета с гитхаба на жёсткий диск.

  2. Встаём в локальную папку пакета.

setwd("путь к пакету")
  1. В папке R в файле converters.R пишем новый конвертор. Лучше не править старые, а дописывать новые!

  2. Проверяем его работоспособность.

  1. Подключаем пакет
  1. Добавляем в табличку watchdog нужные данные.

  2. Записываем обновленный watchdog в пакет.

use_data(watchdog)
  1. Ещё проверочка и красивый сайтик:
check()
pkgdown::build_site()
  1. Закидываем обновленную версию пакета на гитхаб.