Kuidas TAI andmebaasist kergesti andmeid saada? Vol 2

(Uuendatud versioon eelmisest postitusest Kuidas TAIst kergesti andmed Ri saada? seoses sellega, et on muutunud pakett pxweb.)

Eestis kogub tervise valdkonna statistikat TAI – Tervise Arengu Instituut, kes avaldab seda enda tervisestatistika ja terviseuuringute andmebaasis. Nende andmebaas kasutab programmi PC-Axis, mis on välja töötatud Rootsi Statistikaameti poolt.
Sellele tarkvarale on kirjutatud R-is valmis pakett pxweb (vt info CRANis), mis võimaldavad neid andmeid otse lugeda R-i sisse kas käsuga või pool-interaktiivsel moel.

Installeerime ja aktiveerime paketi pxweb ja teised paketid dplyr ja ggplot2 andmete töötlemiseks ning kuvamiseks.

install.packages("pxweb")
library(pxweb)
library(dplyr)
library(ggplot2)

Paketiga tuleb kaasa fail tekstifail api.json, mis asub paketi kataloogis /pxweb/extdata/api.json. Failis on kirjas asutused, mis teadaolevalt samuti kasutavad tarkvara PC-AXIS ja võimaldavad andmeid alla laadida. Neid saab loetleda funktsiooniga pxweb_api_catalogue(). Vaatame näiteks api kataloogi kolme esimest elementi, mis on Rootsi ja Soome statistikaametite lehed.

pxweb_api_catalogue()[1:3]
## $api.scb.se
## Api: api.scb.se
##      Statistics Sweden 
##      ('scb')
## Version(s)   : v1 
## Language(s)  : en, sv 
## Limit(s)     : 30 calls per 10 sec.
##                110000  values per call.
## Url template :
##  http://api.scb.se/OV0104/[version]/doris/[lang] 
## 
## $pxnet2.stat.fi
## Api: pxnet2.stat.fi
##      Statistics Finland 
##      ('statfi')
## Version(s)   : v1 
## Language(s)  : en, fi, sv 
## Limit(s)     : 30 calls per 10 sec.
##                110000  values per call.
## Url template :
##  http://pxnet2.stat.fi/PXWeb/api/[version]/[lang] 
## 
## $pxwebapi2.stat.fi
## Api: pxwebapi2.stat.fi
##      Statistics Finland (old version) 
## Version(s)   : v1 
## Language(s)  : fi 
## Limit(s)     : 100 calls per 10 sec.
##                1000  values per call.
## Url template :
##  http://pxwebapi2.stat.fi/PXWeb/api/[version]/[lang]

Selleks, et pakett töötaks täielikult ka TAI andmetega, võiks lisada faili api.json TAI andmete asukoht ja vajalikud parameetrid. Selleks on nüüd kaks võimalust:

a) lisada käsitsi juurde faili api.json TAI andmed suvalise tekstiredaktoriga.
b) või kirjutame faili api.json üle, kui on kindel, et me teiste riikide andmeid kasutada ei soovi.

Alljärgnevalt kasutan teist varianti: teen orignaalfailist koopia ja kirjuta uue faili vaid TAI andmetega.

file.copy("~/R/win-library/3.6/pxweb/extdata/api.json", "~/R/win-library/3.6/pxweb/extdata/api_orig.json")
tai_api <- 
  '{
  "apis": {
     "pxweb.tai.ee": {
      "alias" : ["tai_et"],
      "description" : "Estonian National Institute for Health Development",
      "url" : "http://pxweb.tai.ee/PXWeb2015/api/[version]/[lang]/",
      "version": ["v1"], 
      "lang": ["en", "et"],
      "calls_per_period": 10,
      "period_in_seconds": 10,
      "max_values_to_download" : 100000
     }
  },

  "local_apis": {}
}'
write(tai_api, file = "~/R/win-library/3.6/pxweb/extdata/api.json")

Andmete esmakordseks allalaadimiseks, kui veel süntaksi kuju ei ole tuttav, siis on soovitatav kasutada interaktiivset käsku interactive_pxweb(). See juhendab samm-haaval kuni lõpliku andmepäringuni funktsiooniga pxweb_get. Lõpliku andmepäringu kuju saab seejärel ise kergesti edasi töödelda.

d <- pxweb_interactive()

Võib alustada kohe TAI andmebaasi leheküljest, siis ei ole vajagi api.json faili üldse.

d <- pxweb_interactive("http://pxweb.tai.ee/PXWeb2015/api/v1/et/")

Kui tabeli nimetus ja soovitud tunnuste väärtused on varasemalt teada, siis saab kirjutada andmepäringu otse. Näiteks laeme alla tervishoiutöötajate palgad kõikide aastate, ametialade, teenuse osutaja liigi ja palga liigi lõikes. Ma tean, et see asub TAI andmebaasi alamkataloogis 04THressursid/06THTootajatePalk, tabelis TT06.px.

Teeme valmis listi pxweb_query_list, mis sisaldab meid huvitavate tunnuste väärtusi. Seejärel tõmbame andmed alla pxweb_data objekti ning teeme selle andmetabeliks käsuga as.data.frame. Andmetabel on pikal kujul. Listi saab ette anda ka JSON objektina ning andmed võib välja võtta samuti soovi korral JSON objektina.

pxweb_query_list <- 
  list(Aasta = c('*'),
       Ametiala = c('*'),
       "Tervishoiuteenuse osutaja liik" = c('*'),
       "Brutokuupalga liik" = c('*'))
px_data <- 
  pxweb_get(url = "http://pxweb.tai.ee/PXWeb2015/api/v1/et/04THressursid/06THTootajatePalk/TT06.px",
            query = pxweb_query_list)

df_long <- as.data.frame(px_data, column.name.type = "text", variable.value.type = "text")

Ülal listis pxweb_query_list tähistab tärn ‘*‘, et soovime kõiki väärtuseid antud tunnuse puhul. Teine võimalus on kirjutada sinna sisse konkreetne väärtuste loetelu.

Ja ongi andmed alla laetud ja valmis töötlemiseks. Näiteks esitame allalaetud andmete põhjal tervishoiutöötajate mediaanpalkade arengu 2011-2018.

df_long %>%  
  filter(`Tervishoiuteenuse osutaja liik` == "Teenuseosutajad kokku", 
         `Brutokuupalga liik` == "Kuupalk koos kõigi lisatasudega, mediaan") %>% 
  ggplot(aes(y=`Täis- või enama ajaga töötavate tervishoiutöötajate brutokuupalk`, x=Aasta, 
   group=Ametiala, color=Ametiala)) +
  geom_point()  +
  geom_line() + 
  labs(title = "Mediaanpalga areng", color="", x="", y="Euro", 
       caption = "Allikas: TAI, tabel TT06")

plot of chunk palgajoonis

Allikad:

Mans Magnusson, Leo Lahti and Love Hansson (rOpenGov 2014-2016). pxweb: R tools for PX-WEB API. URL: http://github.com/ropengov/pxweb

Advertisements
Rubriigid: Uncategorized. Salvesta püsiviide oma järjehoidjasse.

Lisa kommentaar

Täida nõutavad väljad või kliki ikoonile, et sisse logida:

WordPress.com Logo

Sa kommenteerid kasutades oma WordPress.com kontot. Logi välja /  Muuda )

Google photo

Sa kommenteerid kasutades oma Google kontot. Logi välja /  Muuda )

Twitter picture

Sa kommenteerid kasutades oma Twitter kontot. Logi välja /  Muuda )

Facebook photo

Sa kommenteerid kasutades oma Facebook kontot. Logi välja /  Muuda )

Connecting to %s