На следующей неделе старый сайт с данными ОЭСР перестает работать, вся статистика переползает на новый портал. Есть очень удобный 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") # данные по выбранному коду из таблицы