Содержимое
Пересобираем ОЭСР На следующей неделе старый сайт с данными ОЭСР перестает работать, вся статистика переползает на новый портал. Есть очень удобный excel-файл с переходной таблицей между старыми и новыми рядами. Для пользователей R на основе этого файла подготовил пару функций, позволяющих: (а) искать в нем нужный код OecdCode = function(search_phrase) { require("data.table") require("openxlsx") url <- "https://gitlab.com/sis-cc/topologies/oecd-migration/-/raw/main/OECDDatasetsCorrespondence.xlsx" corresp <- openxlsx::read.xlsx(url) names(corresp) <- corresp[8,] corresp <- corresp[-c(1:8),-c(8:9)] row.names(corresp) <- c() CODES1 <- corresp[tolower(corresp$`OECD.Stat Dataset name (EN)`) %like% tolower(search_phrase), c(1:2,5)] CODES2 <- corresp[tolower(corresp$`OECD Data Explorer dataset name (EN)`) %like% tolower(search_phrase), c(1:2,5)] CODES <- rbind(CODES1, CODES2) CODES <- CODES[duplicated(CODES$`OECD.Stat Dataset code`)==F,] } (б) загружать по найденному коду полный ряд OecdBulk = function(code) { require("data.table") require("openxlsx") require("glue") url <- "https://gitlab.com/sis-cc/topologies/oecd-migration/-/raw/main/OECDDatasetsCorrespondence.xlsx" corresp <- openxlsx::read.xlsx(url) names(corresp) <- corresp[8,] corresp <- corresp[-c(1:8),-c(8:9)] row.names(corresp) <- c() rw <- which(corresp[,1] == code) link <- corresp[rw,"OECD Data Explorer link"] pos1 <- as.numeric(gregexpr(pattern = '\\[ag]=',link)) pos2 <- as.numeric(gregexpr(pattern = '\\[id]=',link)) AG <- substr(link,pos1+5,nchar(link)) ID <- substr(link,pos2+5,pos1-4) link_dwnl <- glue::glue("https://sdmx.oecd.org/public/rest/data/{AG},{ID},/all?dimensionAtObservation=AllDimensions&format=csvfilewithlabels") DATA <- data.table::fread(link_dwnl) } Пример использования: CODE <- OecdCode("gdp") # таблица с кодами по запросу "gdp" DATA <- OecdBulk("PDB_GR") # данные по выбранному коду из таблицы