Kuidas R-ga saldo.fin.ee andmeid vaadata?

Koos kolleegidega TÜ CITISest katsetasin, kuidas saldo.fin.ee lehelt mugavalt riigiasutuste avalikke finantsandmeid kätte saada. Näib, et R saab sellega päris kenasti hakkama.

Alljärgnevalt on esitatud üks näitejoonis, mille tegin ja mis näitab, kuidas kaks kõige suuremat tervishoiuasutust Eestis esikoha pärast võistlevad.

tervishoid

Selle joonise jaoks on saldo.fin.ee lehelt R-is käsuga read_html tõmmatud alla aruanne nimega “Tulemiaruanne, detailne, koos bilansivälise informatsiooniga” aastate 2004-2015 jaoks kahe asutuse kohta. Käsuga html_table saab andmed kätte. Tsükliga üle asutuste ja aastate saab kokku tõsta mitme perioodi andmed.

Ebamugavaks teeb asja see, et andmebaasi aadressis ei esine asutuse tehingupartneri kood vaid mingi teine id number, mis tuleb esimesel korral käsitsi kontrollida (ja loota, et see ei muutu üle aastate). Samuti muutus ajaperioodide numeratsiooni loogika andmebaasi aadressis 2007. aastal. Sellest hoolimata näib R-i abil andmete allatõmbamine olevat efektiivsem kui ükshaaval raportite kokkutõstmine.

 

Alljärgnev on üks võimalik viis, kuidas neid andmeid alla laadida. (Vabandage R-i fännid kui midagi väga kummalist leiate, see on eluaegse Stata kasutaja kirjutatud.) R-i fail on leitav ka siit: http://kodu.ut.ee/~avork/files/seminarid/saldofinee2.R

#Andres Võrk, Taavi Unt, TÜ Johan Skytte poliitikauuringute instituut, CITIS

#install.packages(“rvest”)
#install.packages(“ggplot2”)
library(rvest)
library(ggplot2)

#teeme tühja põhja andmetele
tempmatrix=matrix(1,1,5)
colnames(tempmatrix)=c(“Konto”, “Nimetus”, “Summa”, “Periood”, “Asutus”)
minutabel<-data.frame(tempmatrix)

#toome andmed näiteks kahe asutuse ja kõigi aastate jaoks
for (j in c(2278, 2280)){
for (i in c(8, 12, 16, 20, 32, 44, 56, 68, 80, 92, 104, 116)) {
leht <- read_html(paste0(“https://saldo.fin.ee/saldo/reportManagement.longprofit.report.action?partnerId=&#8221;,j,”&periodId=”,i,”&”))
temptabel<-html_table(html_nodes(leht, “table”)[[2]])
colnames(temptabel)=c(“Konto”, “Nimetus”, “Summa”)
temptabel$Asutus=j
if (i<20) { #kvartaalne indeks
temptabel$Periood=2004+(i-8)/4
}
else {  #aastane indeks
temptabel$Periood=2007+(i-20)/12
}
print(mean(temptabel$Periood))  #lihtsalt, et näha, kas kood jookseb
minutabel=rbind(minutabel, temptabel)
}
}

minutabel <- table[-c(1), ] #kustutame esimese ajutise rea uuesti ära
minutabel$Summa<-gsub(” “, “”,minutabel$Summa)
minutabel$Summa<-as.numeric(sub(“,”, “.”,minutabel$Summa))

#ongi valmis tabel
head(minutabel)

#Alljärgnev on näide, kuidas ülal joonis tehti. Kindlasti on palju efektiivsemaid ja elegantsemaid viise

#joonisel üle aastate Põhja-Eesti Regionaalhaigla ja Tartu Ülikooli Kliinikumi tulu tervishoiust
#Tulud tervishoiust, Konto==3223
thtulud<-subset(minutabel, Konto==3223)
#Asutuste nimed
thtulud$Tervishoiuasutus=gsub(2280, “PERH” , thtulud$Asutus)
thtulud$Tervishoiuasutus=gsub(2278, “SA TÜK” ,thtulud$Tervishoiuasutus)
thtulud$Tervishoiuasutus=as.factor(thtulud$Tervishoiuasutus)
#teeme eurodeks enne 2011 aasta näitajad
thtulud$Summa[thtulud$Periood< 2011] <- thtulud$Summa[thtulud$Periood< 2011]/15.6466
#jagame läbi miljonitega
thtulud$Summa<- thtulud$Summa/1000000

#faktoriks, siis ei jäta teljele auke
thtulud$Periood=as.factor(thtulud$Periood)

ggplot(data=thtulud, aes(x=Periood, y=Summa, group=Tervishoiuasutus)) +
geom_line(aes(color=Tervishoiuasutus)) +
geom_point(aes(color=Tervishoiuasutus)) + ylab(“Tulu tervishoiust, mln EUR”) + xlab(“Aasta”) +
labs(title=”Rebimine Eesti tervishoiuturul”)

ggsave(“graafik.png”)

Rubriigid: Näpunäide, 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