Skip to content

Instantly share code, notes, and snippets.

@novica
Created March 22, 2021 20:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save novica/0b373a5e741d6840adf2e99e9b81a0dd to your computer and use it in GitHub Desktop.
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
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")
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