This is an R package for Finnish open government data. New contributions are welcome!.
This work is part of the rOpenGov project.
General users (CRAN release version):
install.packages("sorvi")
library(sorvi)
Developers (Github development version):
install.packages("devtools")
library(devtools)
install_github("sorvi", "ropengov")
library(sorvi)
Further installation and development instructions can be found at the project home page.
For further usage examples, see Louhos-blog and Datawiki.
Extracting information from a Finnish personal identification number:
library(sorvi)
hetu("111111-111C")
## $hetu
## [1] "111111-111C"
##
## $gender
## [1] "Male"
##
## $personal.number
## [1] 111
##
## $checksum
## [1] "C"
##
## $date
## [1] "1911-11-11"
##
## $day
## [1] 11
##
## $month
## [1] 11
##
## $year
## [1] 1911
##
## $century.char
## [1] "-"
##
## attr(,"class")
## [1] "hetu"
Validating Finnish personal identification number:
valid.hetu("010101-0101") # TRUE/FALSE
## [1] TRUE
Get Finnish postal codes vs. municipalities table from Wikipedia
postal.code.table <- GetPostalCodeInfo()
head(postal.code.table)
## postal.code municipality municipality.ascii
## 1 07230 Askola Askola
## 2 07500 Askola Askola
## 3 07510 Askola Askola
## 4 07530 Askola Askola
## 5 07580 Askola Askola
## 6 07590 Askola Askola
Get geographic coordinates for a given IP-address from http://www.datasciencetoolkit.org//ip2coordinates/
ip_location("137.224.252.10")
## Error: could not find function "ip_location"
Finnish municipality information is available through Population Registry (Vaestorekisterikeskus), Statistics Finland (Tilastokeskus) and Land Survey Finland (Maanmittauslaitos). We provide separate download routine for each data set. The row names are in harmonized format and can be used to match data sets from different sources, as different data sets may carry slightly different versions of certain municipality names. Examples for each case:
Finnish municipality information from Land Survey Finland (Maanmittauslaitos, MML).
municipality.info.mml <- GetMunicipalityInfoMML()
## Error: cannot open the connection
municipality.info.mml[1:2,]
## Error: object 'municipality.info.mml' not found
Get information of Finnish provinces from Statistics Finland (Tilastokeskus)
municipality.info.statfi <- GetMunicipalityInfoStatFi()
municipality.info.statfi[1:2,]
## Alue Maapinta-ala, km2 1.1.2013 Taajama-aste, % 1.1.2012
## Akaa Akaa 293 86.9
## Alajärvi Alajärvi 1009 59.7
## Väkiluku 31.12.2012 Väkiluvun muutos, % 2011 - 2012
## Akaa 17134 0.3
## Alajärvi 10268 -0.6
## 0-14 -vuotiaiden osuus väestöstä, % 31.12.2012
## Akaa 18.7
## Alajärvi 18.5
## 15-64 -vuotiaiden osuus väestöstä, % 31.12.2012
## Akaa 62.5
## Alajärvi 59.5
## 65 vuotta täyttäneiden osuus väestöstä, % 31.12.2012
## Akaa 18.8
## Alajärvi 22.0
## Ruotsinkielisten osuus väestöstä, % 31.12.2012
## Akaa 0.2
## Alajärvi 0.1
## Ulkomaiden kansalaisten osuus väestöstä, % 31.12.2012
## Akaa 1.4
## Alajärvi 1.9
## Kuntien välinen muuttovoitto/-tappio, henkilöä 2012
## Akaa -21
## Alajärvi -94
## Syntyneiden enemmyys, henkilöä 2012
## Akaa 50
## Alajärvi -12
## Perheiden lukumäärä 31.12.2012
## Akaa 4782
## Alajärvi 2779
## Valtionveronalaiset tulot, euroa/tulonsaaja 2011
## Akaa 25041
## Alajärvi 21729
## Asuntokuntien lukumäärä 31.12.2012
## Akaa 7767
## Alajärvi 4152
## Vuokra-asunnossa asuvien asuntokuntien osuus, % 31.12.2012
## Akaa 19.7
## Alajärvi 15.9
## Rivi- ja pientaloissa asuvien asuntokuntien osuus asuntokunnista, % 31.12.2012
## Akaa 71.9
## Alajärvi 91.4
## Kesämökkien lukumäärä 31.12.2012
## Akaa 886
## Alajärvi 1300
## Vähintään keskiasteen tutkinnon suorittaneiden osuus 15 vuotta täyttäneistä, % 31.12.2011
## Akaa 64.9
## Alajärvi 59.6
## Korkea-asteen tutkinnon suorittaneiden osuus 15 vuotta täyttäneistä, % 31.12.2011
## Akaa 22.8
## Alajärvi 19.0
## Kunnassa olevien työpaikkojen lukumäärä 31.12.2011
## Akaa 5000
## Alajärvi 3729
## Työllisten osuus 18-74-vuotiaista, % 31.12.2011
## Akaa 61.5
## Alajärvi 54.9
## Työttömyysaste, % 31.12.2011
## Akaa 10.9
## Alajärvi 11.5
## Kunnassa asuvan työllisen työvoiman määrä 31.12.2011
## Akaa 7243
## Alajärvi 3754
## Asuinkunnassaan työssäkäyvien osuus työllisestä työvoimasta, % 31.12. 2011
## Akaa 50.6
## Alajärvi 78.8
## Alkutuotannon työpaikkojen osuus, % 31.12.2011
## Akaa 4.0
## Alajärvi 12.6
## Jalostuksen työpaikkojen osuus, % 31.12.2011
## Akaa 36.1
## Alajärvi 28.1
## Palvelujen työpaikkojen osuus, % 31.12.2011
## Akaa 58.3
## Alajärvi 57.4
## Toimialaltaan tuntemattomien työpaikkojen osuus, % 31.12.2011
## Akaa 1.6
## Alajärvi 1.9
## Taloudellinen huoltosuhde, työvoiman ulkopuolella tai työttömänä olevat yhtä työllistä kohti 31.12.2011
## Akaa 1.36
## Alajärvi 1.75
## Eläkkeellä olevien osuus väestöstä, % 31.12.2011
## Akaa 24.5
## Alajärvi 29.0
## Yritystoimipaikkojen lukumäärä 2012 Kunta.Tilastokeskus Kunta
## Akaa 1003 Akaa Akaa
## Alajärvi 932 Alajärvi Alajärvi
List the province for each municipality in Finland:
# Specific municipalities
m2p <- FindProvince(c("Helsinki", "Tampere", "Turku"))
## Error: cannot open the connection
head(m2p)
## Error: error in evaluating the argument 'x' in selecting a method for function 'head': Error: object 'm2p' not found
# All municipalities
m2p <- FindProvince(municipality.info.statfi$Kunta)
## Error: cannot open the connection
# Speeding up with predefined municipality info table:
m2p <- FindProvince(c("Helsinki", "Tampere", "Turku"), municipality.info.mml)
## Error: object 'municipality.info.mml' not found
head(m2p)
## Error: error in evaluating the argument 'x' in selecting a method for function 'head': Error: object 'm2p' not found
Convert municipality codes and names:
municipality_ids <- ConvertMunicipalityCodes()
head(municipality_ids)
## id name
## 1 890 Utsjoki
## 2 854 Pello
## 3 976 Ylitornio
## 4 845 Tervola
## 5 620 Puolanka
## 6 105 Hyrynsalmi
Translate municipality names Finnish/English:
translations <- LoadData("translations")
head(translations)
## Ã\u0085land Islands South Karelia Southern Ostrobothnia
## "Ahvenanmaa" "EtelÃĪ-Karjala" "EtelÃĪ-Pohjanmaa"
## Southern Savonia Kainuu Tavastia Proper
## "EtelÃĪ-Savo" "Kainuu" "Kanta-HÃĪme"
Municipality-level population information from Vaestorekisterikeskus:
df <- GetPopulationRegister()
head(df)
## Koodi Kunta Kommun Miehet Naiset Yhteensa
## Akaa 020 Akaa Akaa 8452 8637 17089
## Alajärvi 005 Alajärvi Alajärvi 5226 5214 10440
## Alavieska 009 Alavieska Alavieska 1420 1350 2770
## Alavus 010 Alavus Alavus 4619 4634 9253
## Asikkala 016 Asikkala Asikkala 4217 4291 8508
## Askola 018 Askola Askola 2489 2427 4916
Get information of Finnish provinces from Wikipedia:
tab <- GetProvinceInfoWikipedia()
## Error: could not find function "GetProvinceInfoWikipedia"
head(tab)
## Error: error in evaluating the argument 'x' in selecting a method for function 'head': Error: object 'tab' not found
Finnish broadcasting company YLE published a large data set on Finnish company subsidies ((C) MOT 10.9.2012 over 15 years. See the site for more information; CC-BY-SA 3.0-license.
tuet <- GetMOTYritystuet()
## Error: could not find function "GetMOTYritystuet"
head(tuet)
## Error: error in evaluating the argument 'x' in selecting a method for function 'head': Error: object 'tuet' not found
Line fit with confidence smoothers:
library(sorvi);
data(iris);
p <- vwReg(Sepal.Length ~ Sepal.Width, iris)
## | | | 0% | |= | 1% | |= | 2% | |== | 2% | |== | 3% | |== | 4% | |=== | 4% | |=== | 5% | |==== | 6% | |===== | 7% | |===== | 8% | |====== | 8% | |====== | 9% | |====== | 10% | |======= | 10% | |======= | 11% | |======= | 12% | |======== | 12% | |======== | 13% | |========= | 14% | |========== | 15% | |========== | 16% | |=========== | 16% | |=========== | 17% | |=========== | 18% | |============ | 18% | |============ | 19% | |============= | 20% | |============== | 21% | |============== | 22% | |=============== | 22% | |=============== | 23% | |=============== | 24% | |================ | 24% | |================ | 25% | |================= | 26% | |================== | 27% | |================== | 28% | |=================== | 28% | |=================== | 29% | |=================== | 30% | |==================== | 30% | |==================== | 31% | |==================== | 32% | |===================== | 32% | |===================== | 33% | |====================== | 34% | |======================= | 35% | |======================= | 36% | |======================== | 36% | |======================== | 37% | |======================== | 38% | |========================= | 38% | |========================= | 39% | |========================== | 40% | |=========================== | 41% | |=========================== | 42% | |============================ | 42% | |============================ | 43% | |============================ | 44% | |============================= | 44% | |============================= | 45% | |============================== | 46% | |=============================== | 47% | |=============================== | 48% | |================================ | 48% | |================================ | 49% | |================================ | 50% | |================================= | 50% | |================================= | 51% | |================================= | 52% | |================================== | 52% | |================================== | 53% | |=================================== | 54% | |==================================== | 55% | |==================================== | 56% | |===================================== | 56% | |===================================== | 57% | |===================================== | 58% | |====================================== | 58% | |====================================== | 59% | |======================================= | 60% | |======================================== | 61% | |======================================== | 62% | |========================================= | 62% | |========================================= | 63% | |========================================= | 64% | |========================================== | 64% | |========================================== | 65% | |=========================================== | 66% | |============================================ | 67% | |============================================ | 68% | |============================================= | 68% | |============================================= | 69% | |============================================= | 70% | |============================================== | 70% | |============================================== | 71% | |============================================== | 72% | |=============================================== | 72% | |=============================================== | 73% | |================================================ | 74% | |================================================= | 75% | |================================================= | 76% | |================================================== | 76% | |================================================== | 77% | |================================================== | 78% | |=================================================== | 78% | |=================================================== | 79% | |==================================================== | 80% | |===================================================== | 81% | |===================================================== | 82% | |====================================================== | 82% | |====================================================== | 83% | |====================================================== | 84% | |======================================================= | 84% | |======================================================= | 85% | |======================================================== | 86% | |========================================================= | 87% | |========================================================= | 88% | |========================================================== | 88% | |========================================================== | 89% | |========================================================== | 90% | |=========================================================== | 90% | |=========================================================== | 91% | |=========================================================== | 92% | |============================================================ | 92% | |============================================================ | 93% | |============================================================= | 94% | |============================================================== | 95% | |============================================================== | 96% | |=============================================================== | 96% | |=============================================================== | 97% | |=============================================================== | 98% | |================================================================ | 98% | |================================================================ | 99% | |=================================================================| 100%
## [1] "Build ggplot figure ..."
print(p)
Plot matrix:
mat <- rbind(c(1,2,3), c(1, 3, 1), c(4,2,2));
pm <- PlotMatrix(mat, "twoway", midpoint = 2)
# Plotting the scale
# sc <- PlotScale(pm$colors, pm$breaks)
Tämä esimerkki hakee Suomen kuntarajat ja vaestorekisterin asukaslukutiedot kunnittain, ja laskee sekä visualisoi sukupuolten suhteellisen osuuden eri kunnissa Suomen kartalla. Lähde: Louhos-blogi.
library(sorvi)
# hae suomen kartta ja kuntarajat gadm-muodossa
library(gisfi)
gadm <- GetGADM("FIN_adm", "Kunta")
## [1] "gadm"
# vaestorekisterin asukasluvut kunnittain
vrek <- GetPopulationRegister()
# Liita vaestorekisterin tiedot karttaobjektiin ja
# aseta nollaan asukasluku kunnissa joiden osalta se ei ole tiedossa
gadm$asukkaita <- log10(rowSums(vrek[gadm$Kunta, c("Miehet", "Naiset")]))
gadm$asukkaita[is.na(gadm$asukkaita)] <- 0
# Laske myos sukupuolten suhteellinen osuus
gadm$miehet.osuus <- vrek[gadm$Kunta, "Miehet"]/vrek[gadm$Kunta, "Yhteensa"]
gadm$naiset.osuus <- vrek[gadm$Kunta, "Naiset"]/vrek[gadm$Kunta, "Yhteensa"]
# Aseta arvoon 50% miesten/naisten osuus
# kunnissa joiden osalta vakiluku ei ole tiedossa
gadm$miehet.osuus[is.na(gadm$miehet.osuus)] <- 0.5
gadm$naiset.osuus[is.na(gadm$naiset.osuus)] <- 0.5
# paletin rajapisteet
varname <- "naiset.osuus"
interval <- max(abs(gadm[[varname]] - 0.5))
at <- seq(0.5 - interval, 0.5 + interval, length = 100)
# Piirra Suomen kartta varitettyna naisten suhteellisen osuuden nojalla
q <- PlotShape(gadm, varname, type = "twoway",
at = at, main = "Naiset Suomen kunnissa")