Skip to content

Commit

Permalink
SZU download and load
Browse files Browse the repository at this point in the history
  • Loading branch information
petrbouchal committed Mar 8, 2024
1 parent 0b56954 commit e6ae0d2
Show file tree
Hide file tree
Showing 4 changed files with 216 additions and 0 deletions.
45 changes: 45 additions & 0 deletions data-input/kapitoly.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
kap_kod,kap_zkr,kap_name
301,KPR,Kancelář prezidenta republiky
302,K PSP,Poslanecká sněmovna Parlamentu
303,K Sen,Senát Parlamentu
304,ÚV,Úřad vlády ČR
306,MZV,Ministerstvo zahraničních věcí
307,MO,Ministerstvo obrany
308,NBÚ,Národní bezpečnostní úřad
309,KVOP,Kancelář veřejného ochránce práv
312,MF,Ministerstvo financí
313,MPSV,Ministerstvo práce a sociálních věcí
314,MV,Ministerstvo vnitra
315,MŽP,Ministerstvo životního prostředí
317,MMR,Ministerstvo pro místní rozvoj
321,GAČR,Grantová agentura ČR
322,MPO,Ministerstvo průmyslu a obchodu
327,MD,Ministerstvo dopravy
328,ČTÚ,Český telekomunikační úřad
329,MZe,Ministerstvo zemědělství
333,MŠMT,"Ministerstvo školství, mládeže a tělovýchovy"
334,MK,Ministerstvo kultury
335,Mzdr,Ministerstvo zdravotnictví
336,Mspr,Ministerstvo spravedlnosti
343,ÚOOÚ,Úřad pro ochranu osobních údajů
344,ÚPV,Úřad průmyslového vlastnictví
345,ČSÚ,Český statistický úřad
346,ČÚZK,Český úřad zeměměřický a katastrální
348,ČBÚ,Český báňský úřad
349,ERÚ,Energetický regulační úřad
353,ÚOHS,Úřad pro ochranu hospodářské soutěže
355,ÚSTR,Ústav pro studium totalitních režimů
358,ÚS,Ústavní soud
361,AVČR,Akademie věd ČR
372,RRTV,Rada pro rozhlasové a televizní vysílání
374,SSHR,Správa státních hmotných rezerv
375,SÚJB,Státní úřad pro jadernou bezpečnost
377,TA ČR,Technologická agentura ČR
381,NKÚ,Nejvyšší kontrolní úřad
376,GIBS,Generální inspekce bezpečnostních sborů
371,ÚDHPSH,Úřad pro dohled nad hospodařením politických stran a politických hnutí
373,ÚPDI,Úřad pro přístup k dopravní infrastruktuře
378,NÚKIB,Národní úřad pro kybernetickou a informační bezpečnost
359,ÚNRR,Úřad Národní rozpočtové rady
362,NSA,Národní sportovní agentura
C E L K E M, Celkem, Celkem
21 changes: 21 additions & 0 deletions data-input/szu_tisky-links.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
rok,url,note,link,filename
2004,https://www.psp.cz/sqw/text/tiskt.sqw?o=4&ct=966&ct1=0,není excel,2004,NA
2005,https://www.psp.cz/sqw/text/tiskt.sqw?o=5&ct=1&ct1=0,není excel,2005,NA
2006,https://www.psp.cz/sqw/text/tiskt.sqw?o=5&ct=198&ct1=0,není excel,2006,NA
2007,https://www.psp.cz/sqw/text/tiskt.sqw?o=5&ct=500&ct1=0,jiná struktura,2007,NA
2008,https://www.psp.cz/sqw/text/tiskt.sqw?o=5&ct=816&ct1=0,není excel,2008,NA
2009,https://www.psp.cz/sqw/text/tiskt.sqw?o=6&ct=1&ct1=0,není excel,2009,NA
2010,https://www.psp.cz/sqw/text/tiskt.sqw?o=6&ct=332&ct1=0,jiná struktura,2010,t0332000017.xls; t0332000018.xls
2011,https://www.psp.cz/sqw/text/tiskt.sqw?o=6&ct=672&ct1=0,NA,2011,NA
2012,https://www.psp.cz/sqw/text/tiskt.sqw?o=6&ct=1010&ct1=0,NA,2012,NA
2013,https://www.psp.cz/sqw/text/tiskt.sqw?o=7&ct=189&ct1=0,NA,2013,NA
2014,https://www.psp.cz/sqw/text/tiskt.sqw?o=7&ct=475&ct1=0,NA,2014,NA
2015,https://www.psp.cz/sqw/text/tiskt.sqw?o=7&ct=800&ct1=0,NA,2015,NA
2016,https://www.psp.cz/sqw/text/tiskt.sqw?o=7&ct=1106&ct1=0,NA,2016,NA
2016,https://www.psp.cz/sqw/text/tiskt.sqw?o=8&ct=1&ct1=0,NA,2016,NA
2017,https://www.psp.cz/sqw/text/tiskt.sqw?o=8&ct=164&ct1=0,NA,2017,NA
2018,https://www.psp.cz/sqw/text/tiskt.sqw?o=8&ct=472&ct1=0,NA,2018,NA
2019,https://www.psp.cz/sqw/text/tiskt.sqw?o=8&ct=843&ct1=0,NA,2019,NA
2020,https://www.psp.cz/sqw/text/tiskt.sqw?o=8&ct=1210&ct1=0,NA,2020,NA
2021,https://www.psp.cz/sqw/text/tiskt.sqw?o=9&ct=212&ct1=0,NA,2021,NA
2022,https://www.psp.cz/sqw/text/tiskt.sqw?o=9&ct=440&ct1=0,NA,2022,t0440f0.xls
59 changes: 59 additions & 0 deletions scripts/szu-download.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
library(rvest)
library(dplyr)
library(readxl)
library(stringr)
library(readr)

szu_lst <- readr::read_csv("data-input/szu_tisky-links.csv")

get_szu_excel <- function(url, filename, year) {
tisk_html <- read_html(url)

filename_split <- str_split(filename, ";", simplify = FALSE)
filename_clean <- str_trim(filename_split[[1]])

yr <- year

files_tbl <- tibble(
name = tisk_html |> html_elements("td > span.file.xls > a") |> html_text2(),
url = tisk_html |> html_elements("td > span.file.xls > a") |> html_attr("href"),
year = yr
)

print(filename_clean)

if(!is.na(filename)) rslt <- files_tbl |> filter(name %in% filename_clean) else rslt <- files_tbl

return(rslt)
}

# get_szu_excel(szu_lst$url[10], NA)
# get_szu_excel(szu_lst$url[10], szu_lst$filename[10])
# get_szu_excel(szu_lst$url[7], szu_lst$filename[7])
# get_szu_excel(szu_lst$url[20], szu_lst$filename[20])

szu_lst_sub <- szu_lst |> select(url, filename, year = rok) |> filter(year > 2009)

szu_xls_urls <- pmap_dfr(szu_lst_sub, .f = get_szu_excel) |>
mutate(order = row_number(), count = n(), .by = year)

download_szu_excel <- function(name, url, year, dir) {
outfile <- file.path(dir, paste0(year, "_", name))
url <- paste0("https://psp.cz", url)
curl::curl_download(url, outfile)
rslt <- tibble(url = url, file = outfile, rok = year)
}

szu_excel <- pmap_dfr(szu_xls_urls[,1:3], download_szu_excel, "data-input/szu-psp/")

szu_excel_sheets <- szu_excel |>
mutate(sheets = map(file, readxl::excel_sheets)) |>
unnest(cols = sheets)

readr::write_rds(szu_excel_sheets, "data-interim/szu-excel-metadata.rds")

szu_excel_sheets |>
filter(str_detect(sheets, "([Tt]ab1[01])|(Str\\.)")) |>
count(rok, file)


91 changes: 91 additions & 0 deletions scripts/szu-load.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
library(dplyr)
library(readr)
library(readxl)
library(ggplot2)

options(scipen = 100)

szu_excel_sheets <- readr::read_rds("data-interim/szu-excel-metadata.rds")

read_szu_excel <- function(path, sheet, year) {
is_pocet <-
read_excel(path, sheet, skip = 11) |>
janitor::remove_empty(which = "rows") |>
mutate(rok = year, list = sheet, file = basename(path))
}

szu_uo <- szu_excel_sheets |>
mutate(file_hash = tools::md5sum(file)) |>
filter(str_detect(sheets, "ÚO"), str_detect(sheets, "Tab1[10]|Str")) |>
distinct(file_hash, sheets, rok, .keep_all = TRUE) |>
select(path = file, sheet = sheets, year = rok) |>
pmap_dfr(read_szu_excel) |>
janitor::clean_names() |>
group_by(rok, list, file) |>
mutate(promenna = if_else((max(x1_2, na.rm = TRUE) > 1e5), "objemy", "pocty")) |>
ungroup() |>
rename(kap_kod = x1,
kap_zkr = x2,
kap_name = x3,
skut_min = x1_2,
rozp_schv = x2_2,
rozp_pzm = x3_2,
skut = x4,
plneni_proc = x5,
plneni_rozdil = x6,
skut_skut = x7
) |>
drop_na(kap_kod) |>
mutate(skut_min = if_else(rok < 2013 & promenna == "objemy", skut_min * 1000, skut_min),
rozp_schv = if_else(rok < 2013 & promenna == "objemy", rozp_schv * 1000, rozp_schv),
rozp_pzm = if_else(rok < 2013 & promenna == "objemy", rozp_pzm * 1000, rozp_pzm),
skut = if_else(rok < 2013 & promenna == "objemy", skut * 1000, skut),
kap_name = if_else(is.na(kap_name), kap_zkr, kap_name)) |>
rows_update(read_csv("data-input/kapitoly.csv"), by = "kap_kod")

szu_uo |>
count(rok, kap_kod, promenna) |>
count(n)

szu_uo |>
count(rok, wt = is.na(kap_name))

szu_uo |>
group_by(rok, kap_kod, promenna) |>
filter(n() > 1) |>
arrange(kap_kod)

head(szu_uo)

szu_uo_2009 <- szu_uo |>
filter(rok == 2010) |>
mutate(rok = 2009,
skut = skut_min,
skut_min = NA,
plneni_proc = NA,
plneni_rozdil = NA,
rozp_schv = NA, rozp_pzm = NA, skut_skut = NA)

szu_uo_wide <- szu_uo |>
bind_rows(szu_uo_2009) |>
pivot_wider(id_cols = c(kap_kod, kap_name, rok, promenna, kap_zkr),
values_from = c(matches("^skut|^rozp|^plneni")), names_from = promenna, names_glue = "{promenna}_{.value}") |>
left_join(df_infl) |>
left_join(wages_later)


szu_uo_wide |>
mutate(plat = objemy_skut/pocty_skut/12) |>
filter(plat != 0, kap_zkr != "NSA") |>
ggplot(aes(rok, plat)) +
geom_line() +
geom_line(aes(y = phasal_all), color = "grey") +
facet_wrap(~kap_zkr)

szu_uo_wide |>
filter(is.na(kap_name)) |> View()
count(kap_kod)

szu_uo |>
distinct(kap_kod, kap_zkr, kap_name) |>
format_csv() |> cat()

0 comments on commit e6ae0d2

Please sign in to comment.