Skip to content

Instantly share code, notes, and snippets.

@jlacko
Created March 26, 2023 14:12
Show Gist options
  • Save jlacko/2407fd41dcbfa5029fec969e09bf62a6 to your computer and use it in GitHub Desktop.
Save jlacko/2407fd41dcbfa5029fec969e09bf62a6 to your computer and use it in GitHub Desktop.
Call na API Českého statistického úřadu - číselník obcí + populace
library(dplyr)
library(czso)
# CZSO číselník obcí - #043
cisob <- czso::czso_get_codelist("cis43") %>%
mutate(chodnota = as.character(chodnota)) %>%
select(KOD_OBEC = chodnota, NAZ_OBEC = text)
# CZSO číselník okresů - #0101
cisokre <- czso::czso_get_codelist("cis101") %>%
mutate(chodnota = as.character(chodnota)) %>%
select(KOD_OKRES = chodnota, KOD_LAU1 = okres_lau, NAZ_LAU1 = text)
# CZSO číselník krajů - #0100
ciskraj <- czso::czso_get_codelist("cis100") %>%
mutate(chodnota = as.character(chodnota)) %>%
select(KOD_KRAJ = chodnota, KOD_CZNUTS3 = cznuts, NAZ_CZNUTS3 = text)
# vazba obec / okres
vazob <- czso::czso_get_codelist("cis101vaz43") %>%
mutate(chodnota1 = as.character(chodnota1),
chodnota2 = as.character(chodnota2)) %>%
select(KOD_OBEC = chodnota2, KOD_OKRES = chodnota1)
# vazba okres / kraj
vazokr <- czso::czso_get_codelist("cis100vaz101") %>%
mutate(chodnota1 = as.character(chodnota1),
chodnota2 = as.character(chodnota2)) %>%
select(KOD_OKRES = chodnota2, KOD_KRAJ = chodnota1)
# vazba obec / pou obec
vazpou <- czso::czso_get_codelist("cis61vaz43") %>%
mutate(chodnota1 = as.character(chodnota1),
chodnota2 = as.character(chodnota2)) %>%
select(KOD_OBEC = chodnota2, KOD_POU = chodnota1, NAZ_POU = text1)
# vazba obec / orp obec
vazorp <- czso::czso_get_codelist("cis65vaz43") %>%
mutate(chodnota1 = as.character(chodnota1),
chodnota2 = as.character(chodnota2)) %>%
select(KOD_OBEC = chodnota2, KOD_ORP = chodnota1, NAZ_ORP = text1)
# pospojování do zdroje všech zdrojů :)
obce <- cisob %>%
inner_join(vazpou, by = "KOD_OBEC") %>%
inner_join(vazorp, by = "KOD_OBEC") %>%
inner_join(vazob, by = "KOD_OBEC") %>%
inner_join(cisokre, by = "KOD_OKRES") %>%
inner_join(vazokr, by = "KOD_OKRES") %>%
inner_join(ciskraj, by = "KOD_KRAJ")
# střední počet obyvatel / všechny admin jednotky
src <- czso::czso_get_table("130141r22") %>%
filter(vuk == "DEM0004") %>%
mutate(obyvatel = as.numeric(hodnota)) %>%
select(vuzemi_kod, obyvatel)
# výstup - o toto zde šlo celou dobu!
result <- inner_join(obce, src, by = c("KOD_OBEC" = "vuzemi_kod"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment