title: "Przygotowywanie wskaźników na podstawie Banku Danych Lokalnych GUS" author: "Tomasz Żółtak" date: "28 lutego 2019" lang: pl
Pobieranie wskaźników z API BDL z wykorzystaniem funkcji pakietu MLASZdane przebiega w dwóch krokach:
znajdz_wskazniki_bdl()
lub wskaznik_bdl()
.pobierz_dane_bdl()
.Wyszukiwanie wskaźników BDL przy użyciu API nie jest łatwe, ze względu na przyjęty przez GUS nie do końca spójny (a przynajmniej niezbyt wygodny) schemat nazywania wskaźników. Wskaźniki można bowiem podzielić na dwie grupy: te, które posiadają unikalne i informatywne nazwy oraz te, których nazwy są nieinformatywne i nie są unikalne (w szczególności wskaźniki o nazwie “ogółem”). Te pierwsze można łatwo wyszukiwać po nazwach (korzystając z odpowiedniej funkcji API), te drugie trzeba znajdować, przeszukując krok po kroku w głąb drzewiastą strukturę grup i podgrup wskaźników. Ponieważ to drugie podejście jest dosyć skomplikowane i słabo poddające się automatyzacji, w ramach pakietu zdecydowano się przyjąć następujące podejście:
znajdz_wskazniki_bdl()
.n1
opisuje okres sprawozdawczy w ramach roku
(kwartał lub miesiąc), a n2
jako taką nazwę wskaźnika.id
w API BDL, a
następnie użyć funkcji wskaznik_bdl()
, aby pobrać informacje
o danym wskaźniku zwrócone w analogicznej formie jak ta, w jakiej
zwraca informacje o wyszukanych wskaźnikach funkcja
znajdz_wskazniki_bdl()
.wskaznik_bdl()
umożliwia przy tym nadpisanie
nieinformatywnej nazwy wskaźnika pobranej z API BDL (i
zwracaną w kolumnie n1
) nazwą, której chcielibyśmy używać na
potrzeby dalszych operacji na danych.Rozróżnienie wskaźników jednego i drugiego rodzaju w praktyce polega na sprawdzeniu, czy dany wskaźnik daje się znaleźć po nazwie, co do której spodziewamy się, że ją ma - jeśli się to nie udaje, najprawdopodobniej jest to wskaźnik drugiego rodzaju.
Przykładowe użycia:
library(MLASZdane)
znajdz_wskazniki_bdl("stopa bezrobocia rejestrowanego")
wskaznik_bdl(64428, "przeciętne miesięczne wynagrodzenia brutto")
Do pobierania zestawień wartości wskaźników z API BDL służy funkcja
pobierz_dane_bdl()
, która przyjmuje następujące argumenty:
wskazniki
- obiekt zwrócony przez funkcję znajdz_wskazniki_bdl()
lub wskaznik_bdl()
(lub dowolne połączenie wyników wywołania tych
funkcji przy pomocy funkcji rbind()
lub bind_rows()
);lata
lata, dla których mają zostać pobrane wartości wskaźników
(można podać wektor liczb, aby pobrać wartości z wielu lat);poziom
- poziom agregacji, na którym mają zostać pobrane wartości
wskaźników: “makroregiony”, “województwa”, “regiony”, “podregiony”,
“powiaty” lub “gminy” (domyślnie “powiaty”).Funkcja zwraca ramkę danych o kolumnach:
idWsk
- id wskaźnika w API BDL;subjectId
- id tematu (grupy wskaźników) w API BDL;n1
i ew. n2
- kolumny opisujące nazwy wskaźników w API BDL (por.
sekcja 1.1.);level
- najniższy poziom NTS, na którym raportowany jest wskaźnik;measureUnitId
, measureUnitName
- id i nazwa jednostki, w jakiej
wyrażone są wartości wskaźnika;idJst
- kod NTS jednostki terytorialnej, do której odnosi się
wartość wskaźnika;name
- nazwa jednostki terytorialnej, do której odnosi się wartość
wskaźnika;year
- rok, do którego odnosi się wartość wskaźnika;val
- wartość wskaźnika;attrId
- identyfikator atrybutu (co do zasady nieistotny);teryt
kod TERYT przeliczony na podstawie idJst
.Przykładowe użycia:
Uwaga! API BDL ma absurdalnie niskie limity na dopuszczalną
w przedziale czasu liczbę zapytań, więc zapytanie takie jak poniżej
można w praktyce wykonać tylko raz na 15 minut. w związku z tym zasadne
jest zrobienie tego raz i zapisanie wyników lokalnie do wykorzystania
w przyszłości (co w kodzie poniżej realizuje wywołanie funkcji
save()
).
library(dplyr)
library(MLASZdane)
wskaznikiBdl =
bind_rows(znajdz_wskazniki_bdl("stopa bezrobocia rejestrowanego") %>%
pobierz_dane_bdl(2017:2018, "powiaty"),
wskaznik_bdl(64428, "przeciętne miesięczne wynagrodzenia brutto") %>%
pobierz_dane_bdl(2017, "powiaty"))
save(wskaznikiBdl, file = "wskazniki_BDL.RData")
Przekształcenie zestawień wskaźników pobranych z API BDL na zestawienia
wskaźników wykorzystywanych w monitorowaniu losów absolwentów polega na
zmianie formy zestawienia z długiej (jedna JST-wiele wierszy) na
szeroką (jedna JST-jeden wiersz) oraz przypisaniu kolumnom takiego
zestawienia w formie szerokiej adekwatnych nazw. Przekształcenia te
wykonuje funkcja przeksztalc_dane_bdl()
, przy czym w obecnej postaci
ma ona kilka ważnych ograniczeń:
Nie ma gwarancji, że ww. reguły nie ulegną zmianie w przyszłości!
Nazwy zmiennych zawierających wartości wskaźników w zwracanym
zestawieniu są postaci: jst_wskaznik_[[:digit:]]+[mr]
, gdzie:
wskaznik
to nazwa wskaźnika (p. wyżej);[[:digit:]]+
to liczba (miesięcy lub lat od momentu planowego
ukończenia szkoły przez uczniów rocznika podanego w wywołaniu
funkcji argumentem rocznik);[mr]+
to litera “m” lub litera “r” w zależności od tego, czy dany
wskaźnik raportowany jest przez GUS z częstotliwością miesięczną,
czy roczną.Jeśli wszystkie wskaźniki w zestawieniu pobranym z API BDL przekazanym do funkcji są określone na tym samym poziomie agregacji, to w nazwach zmiennych ciąg znaków “jst” jest zamieniany na nazwę danego poziomu (np. “powiat”).
Przy wywołaniu funkcji konieczne jest podanie rocznika, w odniesieniu do którego przygotowane zostaną nazwy zmiennych (przy czym funkcja arbitralnie zakłada, że abolwenci powinni planowo kończyć szkołę w czerwcu).
Przy pomocy opcjonalnego argumentu prefiks
możliwe jest też dopisanie
do nazw zmiennych identyfikujących w wynikowym zestawieniu JST (teryt
i nazwaJst
) prefiksu, tak aby odpowiadały one nazwom zmiennych
w zbiorze, do którego ma być przyłączane zestawienie.
Przykładowe użycie:
library(MLASZdane)
load("wskazniki_BDL.RData")
przeksztalc_dane_bdl(wskaznikiBdl, 2017)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.