Created
March 22, 2021 20:11
-
-
Save novica/0b373a5e741d6840adf2e99e9b81a0dd to your computer and use it in GitHub Desktop.
R script to create a clean csv from the municipal expenses budget pdf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
box::use( | |
tabulizer[locate_areas, extract_tables], | |
purrr[reduce], | |
dplyr[mutate, across, select, bind_rows, if_else, glimpse, lag, `%>%`], | |
stringr[str_remove, str_remove_all], | |
tidyr[extract, fill], | |
readr[write_csv] | |
) | |
# bilans na prihodi | |
# this is for aerodrom municipality but it should work for all assuming they have the same format pdf | |
# locate the table in the pdf | |
# br <- locate_areas("http://aerodrom.gov.mk/Upload/Editor_Upload/januari%202021/(02)%20Bilans%20na%20Rash_B2021%20Stavka%2030_12_2020.pdf") | |
# or use this coordinates if it looks the same as the aerodrom one | |
br <- list(c(top = 156.79306, | |
left = 20.08177, | |
bottom = 481.10658, | |
right = 818.71849)) | |
br_table <- extract_tables("http://aerodrom.gov.mk/Upload/Editor_Upload/januari%202021/(02)%20Bilans%20na%20Rash_B2021%20Stavka%2030_12_2020.pdf", | |
output = "data.frame", | |
area = br, | |
guess = FALSE) | |
br_table_clean <- reduce(br_table, bind_rows) | |
br_table_clean <- rbind(names(br_table_clean), br_table_clean) | |
rashodi_names = c("kategorija", "stavka", "opis", "prethoden_budget", "budget", | |
"rashodi_od_samofinansirani_aktivnosti", "rashodi_od dotacii", | |
"rashodi_od_donacii", "rashodi_od_krediti", "vkupno_rashodi") | |
br_table_complete <- br_table_clean %>% | |
mutate(across(.cols = everything(), .fns = ~str_remove(., "X"))) %>% | |
mutate(across(.cols = everything(), .fns = ~str_remove(., "\\.\\d$"))) %>% | |
mutate(across(.cols = 3:9, .fns = ~str_remove_all(., "\\."))) %>% | |
mutate(across(.cols = 3:9, .fns = ~str_remove_all(., "\\,"))) %>% | |
#the regex should do it for now. we need just the numbers after all. | |
extract(PLATI.I.NADOMESTOCI, into = c("stavka", "opis"), "^(\\d+)(\\s.*)$") %>% | |
fill(X40) | |
colnames(br_table_complete) <- rashodi_names | |
opis <- c("Плати и надоместоци", "Основни плати", | |
"Придонеси за социјално осигурување", | |
"Останати придонеси од плати", "Надоместоци", | |
"Резерви и недефинирани расходи", | |
"Постојана резерва (непредвидливи расходи)", | |
"Тековни резерви (разновидни расходи)", | |
"Стоки и услуги", "Патни и дневни расходи", | |
"Комунални услуги, греење, комуникации и транспорт", | |
"Материјали и ситен инвентар", "Поправки и тековно одржување", | |
"Договорни услуги", "Други тековни расходи", | |
"Привремени вработувања", "Субвенции и трансфери", | |
"Трансфери до невладини организации", "Разни трансфери", | |
"Капитални расходи", "Купување на опрема и машини", | |
"Други градежни објекти", "Купување на мебел", | |
"Вложувања и нефинансиски средства", "Купување на возила") | |
br_table_complete$opis <- opis | |
glimpse(br_table_complete) | |
write_csv(br_table_complete, "aerodrom_bilans_na_rashodi_2021.csv") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kategorija | stavka | opis | prethoden_budget | budget | rashodi_od_samofinansirani_aktivnosti | rashodi_od dotacii | rashodi_od_donacii | rashodi_od_krediti | vkupno_rashodi | |
---|---|---|---|---|---|---|---|---|---|---|
40 | NA | Плати и надоместоци | 464800000 | 88100000 | 0 | 387000000 | 0 | 0 | 475100000 | |
40 | 401 | Основни плати | 328711000 | 54655000 | 0 | 278453000 | 0 | 0 | 333108000 | |
40 | 402 | Придонеси за социјално осигурување | 127809000 | 23905000 | 0 | 108547000 | 0 | 0 | 132452000 | |
40 | 403 | Останати придонеси од плати | 60000 | 60000 | 0 | 0 | 0 | 0 | 60000 | |
40 | 404 | Надоместоци | 8220000 | 9480000 | 0 | 0 | 0 | 0 | 9480000 | |
41 | NA | Резерви и недефинирани расходи | 6000000 | 7000000 | 0 | 0 | 0 | 0 | 7000000 | |
41 | 412 | Постојана резерва (непредвидливи расходи) | 3000000 | 3000000 | 0 | 0 | 0 | 0 | 3000000 | |
41 | 413 | Тековни резерви (разновидни расходи) | 3000000 | 4000000 | 0 | 0 | 0 | 0 | 4000000 | |
42 | NA | Стоки и услуги | 547176000 | 301320000 | 74397000 | 34129000 | 20286000 | 0 | 430132000 | |
42 | 420 | Патни и дневни расходи | 13406000 | 450000 | 1396000 | 0 | 11986000 | 0 | 13832000 | |
42 | 421 | Комунални услуги, греење, комуникации и транспорт | 99204000 | 52939000 | 6156000 | 15692000 | 60000 | 0 | 74847000 | |
42 | 423 | Материјали и ситен инвентар | 73370000 | 13979000 | 40997000 | 1565000 | 476000 | 0 | 57017000 | |
42 | 424 | Поправки и тековно одржување | 230420000 | 146712000 | 12319000 | 1847000 | 0 | 0 | 160878000 | |
42 | 425 | Договорни услуги | 80523000 | 51163000 | 9077000 | 2230000 | 5109000 | 0 | 67579000 | |
42 | 426 | Други тековни расходи | 29753000 | 24351000 | 3952000 | 295000 | 2655000 | 0 | 31253000 | |
42 | 427 | Привремени вработувања | 20500000 | 11726000 | 500000 | 12500000 | 0 | 0 | 24726000 | |
46 | NA | Субвенции и трансфери | 56278000 | 66054000 | 0 | 0 | 0 | 0 | 66054000 | |
46 | 463 | Трансфери до невладини организации | 31610000 | 40960000 | 0 | 0 | 0 | 0 | 40960000 | |
46 | 464 | Разни трансфери | 24668000 | 25094000 | 0 | 0 | 0 | 0 | 25094000 | |
48 | NA | Капитални расходи | 310948000 | 369883000 | 9436000 | 0 | 0 | 0 | 379319000 | |
48 | 480 | Купување на опрема и машини | 27410000 | 19380000 | 4060000 | 0 | 0 | 0 | 23440000 | |
48 | 482 | Други градежни објекти | 268448000 | 296133000 | 0 | 0 | 0 | 0 | 296133000 | |
48 | 483 | Купување на мебел | 1190000 | 100000 | 4476000 | 0 | 0 | 0 | 4576000 | |
48 | 485 | Вложувања и нефинансиски средства | 8200000 | 41470000 | 0 | 0 | 0 | 0 | 41470000 | |
48 | 486 | Купување на возила | 5700000 | 12800000 | 900000 | 0 | 0 | 0 | 13700000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment