Investigação da Execução Orçamentária e dados de despesas pelo Estado e Município.
View the Project on GitHub dan-reznik/MP-Execucao-Orcamentaria
Inclusão de pacotes
library(tidyverse)
library(fs)
library(assertthat)
source("preparo_util.R")
Lista diretório
dir_ls("data")
#> data/despesa.zip data/despesa2018.csv
#> data/despesa2018.zip data/despesa2018_squished.zip
#> data/df_all.rds
Pelo menos o csv ou zip devem existir, e se só o ultimo, unzipar
fname_2018 <- "data/despesa2018.csv"
fname_2018_zip <- repl_ext(fname_2018,"zip")
assert_that(file_exists(fname_2018)|
file_exists(fname_2018_zip))
#> [1] TRUE
if(!file_exists(fname_2018))
unzip(fname_2018_zip,exdir='data')
Cria variável com nome do arquivo e conta linhas
linhas <- read_file(fname_2018) %>% str_count('\\n')
linhas
#> [1] 99368
Olhar para as primeiras linhas
read_lines(fname_2018, n_max=10)
#> [1] "Governo do Estado do Rio de Janeiro"
#> [2] "Secretaria de Estado de Fazenda"
#> [3] "Subsecretaria de Pol<ed>tica Fiscal"
#> [4] "Transpar<ea>ncia Fiscal"
#> [5] "Despesa entre 01/01/2018 e 31/12/2018"
#> [6] "Poder ;Nome Poder ;Grupo ;Nome Grupo ;Modalidade de Aplica<e7><e3>o ;Nome Modalidade de Aplica<e7><e3>o ;Elemento ;Nome Elemento ;Sub Elemento ;Nome Sub Elemento ;<d3>rg<e3>o ;Nome <d3>rg<e3>o ;UO ;Nome UO ;UG ;Nome UG ;Credor ;Nome Credor ;Fonte de Recursos ;Nome Fonte de Recursos ;Processo ;Fun<e7><e3>o ;Nome Fun<e7><e3>o ;Sub Fun<e7><e3>o ;Nome Sub Fun<e7><e3>o ;Licita<e7><e3>o ;Nome Licita<e7><e3>o ;Empenho ;Hist<f3>rico ;Valor Empenhado ;Valor Liquidado ;Valor Pago "
#> [7] "1 ;Executivo ;3 ;;90 ;Aplica<e7><f5>es Diretas ;339036;Outros Servi<e7>os de Terceiros - Pessoa F<ed>sica ;;;21 ;Secretaria de Estado da Casa Civil e Desenvol ;2133 ;Departamento de Tr<e2>nsito do Estado do Rio de ;263100;DEPARTAMENTO DE TRANSITO DO RIO DE JANEIRO ;965.197.977-15;ALEXANDRE CESAR DE SOUZA ;32 ;Taxas pelo Exerc<ed>cio do Poder de Pol<ed>cia e por Servi<e7>os P<fa>blicos ;E-12/061/7244/20 ;06 ;Seguran<e7>a P<fa>blica ;122 ;Administra<e7><e3>o Geral ;05 ;DISPENSA ;4390 ;Cancelamento conforme Decreto n<U+00BA>46.139/2017. ;0 ;0 ;0 "
#> [8] "1 ;Executivo ;3 ;;90 ;Aplica<e7><f5>es Diretas ;339014;Di<e1>rias - Civil ;;;31 ;Secretaria de Estado de Transportes ;3131 ;Instituto de Pesos e Medidas do Estado do Rio ;053100;INSTITUTO DE PESOS E MEDIDAS DO RJ ;042.670.427-48;LUIS ALEXANDRE FERREIRA SILVEIRA ;12 ;Transfer<ea>ncias Volunt<e1>rias ;E-12/171/1022/17 ;22 ;Ind<fa>stria ;122 ;Administra<e7><e3>o Geral ;07 ;NAO APLICAVEL ;1354 ;Empenho para pagamento de di<e1>rias. ;0 ;0 ;0 "
#> [9] "1 ;Executivo ;3 ;;90 ;Aplica<e7><f5>es Diretas ;339039;Outros Servi<e7>os de Terceiros - Pessoa Jur<ed>dic ;;;29 ;Secretaria de Estado de Sa<fa>de ;2961 ;Fundo Estadual de Sa<fa>de ;296100;FUNDO ESTADUAL DE SAUDE - FES ;40.197.840/000;BRASIL SUL IND E COM LTDA ;22 ;Adicional do ICMS - FECP ;E-08-001/1193 /2 ;10 ;Sa<fa>de ;302 ;Assist<ea>ncia Hospitalar e Ambulatorial ;09 ;PREG<c3>O ELETR<d4>NICO ;7927 ;Decreto 46139 de 30 de outubro de 2017 ;0 ;0 ;0 "
#> [10] "1 ;Executivo ;3 ;;90 ;Aplica<e7><f5>es Diretas ;339030;Material de Consumo ;;;21 ;Secretaria de Estado da Casa Civil e Desenvol ;2104 ;Subsecretaria de Estado de Governo ;120200;SUBSEC. DE REC. LOGISTICOS - SEFAZ-LOGISTICA ;34.274.233/000;PETROBRAS DISTRIBUIDORA S/A ;00 ;Ordin<e1>rios Provenientes de Impostos ;E-01/036/649/201 ;04 ;Administra<e7><e3>o ;122 ;Administra<e7><e3>o Geral ;09 ;PREG<c3>O ELETR<d4>NICO ;561 ;SEGOV CANCFELAMENTO DE EMPENHO ;0 ;0 ;0 "
Qual é o encoding deste arquivo?
guess_encoding(fname_2018)
#> # A tibble: 2 x 2
#> encoding confidence
#> <chr> <dbl>
#> 1 ISO-8859-1 0.8
#> 2 ISO-8859-2 0.35
Data Cleansing: Pular 5 linhas no cabeçalho, ajustar o “encoding”
loc_bz <- locale(encoding="ISO-8859-1")
primeiras_linhas <- read_lines(fname_2018, # .zip
skip=5,n_max=5,
locale=loc_bz)
primeiras_linhas
#> [1] "Poder ;Nome Poder ;Grupo ;Nome Grupo ;Modalidade de Aplicação ;Nome Modalidade de Aplicação ;Elemento ;Nome Elemento ;Sub Elemento ;Nome Sub Elemento ;Órgão ;Nome Órgão ;UO ;Nome UO ;UG ;Nome UG ;Credor ;Nome Credor ;Fonte de Recursos ;Nome Fonte de Recursos ;Processo ;Função ;Nome Função ;Sub Função ;Nome Sub Função ;Licitação ;Nome Licitação ;Empenho ;Histórico ;Valor Empenhado ;Valor Liquidado ;Valor Pago "
#> [2] "1 ;Executivo ;3 ;;90 ;Aplicações Diretas ;339036;Outros Serviços de Terceiros - Pessoa Física ;;;21 ;Secretaria de Estado da Casa Civil e Desenvol ;2133 ;Departamento de Trânsito do Estado do Rio de ;263100;DEPARTAMENTO DE TRANSITO DO RIO DE JANEIRO ;965.197.977-15;ALEXANDRE CESAR DE SOUZA ;32 ;Taxas pelo Exercício do Poder de Polícia e por Serviços Públicos ;E-12/061/7244/20 ;06 ;Segurança Pública ;122 ;Administração Geral ;05 ;DISPENSA ;4390 ;Cancelamento conforme Decreto nº46.139/2017. ;0 ;0 ;0 "
#> [3] "1 ;Executivo ;3 ;;90 ;Aplicações Diretas ;339014;Diárias - Civil ;;;31 ;Secretaria de Estado de Transportes ;3131 ;Instituto de Pesos e Medidas do Estado do Rio ;053100;INSTITUTO DE PESOS E MEDIDAS DO RJ ;042.670.427-48;LUIS ALEXANDRE FERREIRA SILVEIRA ;12 ;Transferências Voluntárias ;E-12/171/1022/17 ;22 ;Indústria ;122 ;Administração Geral ;07 ;NAO APLICAVEL ;1354 ;Empenho para pagamento de diárias. ;0 ;0 ;0 "
#> [4] "1 ;Executivo ;3 ;;90 ;Aplicações Diretas ;339039;Outros Serviços de Terceiros - Pessoa Jurídic ;;;29 ;Secretaria de Estado de Saúde ;2961 ;Fundo Estadual de Saúde ;296100;FUNDO ESTADUAL DE SAUDE - FES ;40.197.840/000;BRASIL SUL IND E COM LTDA ;22 ;Adicional do ICMS - FECP ;E-08-001/1193 /2 ;10 ;Saúde ;302 ;Assistência Hospitalar e Ambulatorial ;09 ;PREGÃO ELETRÔNICO ;7927 ;Decreto 46139 de 30 de outubro de 2017 ;0 ;0 ;0 "
#> [5] "1 ;Executivo ;3 ;;90 ;Aplicações Diretas ;339030;Material de Consumo ;;;21 ;Secretaria de Estado da Casa Civil e Desenvol ;2104 ;Subsecretaria de Estado de Governo ;120200;SUBSEC. DE REC. LOGISTICOS - SEFAZ-LOGISTICA ;34.274.233/000;PETROBRAS DISTRIBUIDORA S/A ;00 ;Ordinários Provenientes de Impostos ;E-01/036/649/201 ;04 ;Administração ;122 ;Administração Geral ;09 ;PREGÃO ELETRÔNICO ;561 ;SEGOV CANCFELAMENTO DE EMPENHO ;0 ;0 ;0 "
Remover espaços. Referencia de REGEXP
Remove espaços nas primeiras linhas
primeiras_linhas %>% remove_espacos
#> [1] "Poder;Nome Poder;Grupo;Nome Grupo;Modalidade de Aplicação;Nome Modalidade de Aplicação;Elemento;Nome Elemento;Sub Elemento;Nome Sub Elemento;Órgão;Nome Órgão;UO;Nome UO;UG;Nome UG;Credor;Nome Credor;Fonte de Recursos;Nome Fonte de Recursos;Processo;Função;Nome Função;Sub Função;Nome Sub Função;Licitação;Nome Licitação;Empenho;Histórico;Valor Empenhado;Valor Liquidado;Valor Pago"
#> [2] "1;Executivo;3;;90;Aplicações Diretas;339036;Outros Serviços de Terceiros - Pessoa Física;;;21;Secretaria de Estado da Casa Civil e Desenvol;2133;Departamento de Trânsito do Estado do Rio de;263100;DEPARTAMENTO DE TRANSITO DO RIO DE JANEIRO;965.197.977-15;ALEXANDRE CESAR DE SOUZA;32;Taxas pelo Exercício do Poder de Polícia e por Serviços Públicos;E-12/061/7244/20;06;Segurança Pública;122;Administração Geral;05;DISPENSA;4390;Cancelamento conforme Decreto nº46.139/2017.;0;0;0"
#> [3] "1;Executivo;3;;90;Aplicações Diretas;339014;Diárias - Civil;;;31;Secretaria de Estado de Transportes;3131;Instituto de Pesos e Medidas do Estado do Rio;053100;INSTITUTO DE PESOS E MEDIDAS DO RJ;042.670.427-48;LUIS ALEXANDRE FERREIRA SILVEIRA;12;Transferências Voluntárias;E-12/171/1022/17;22;Indústria;122;Administração Geral;07;NAO APLICAVEL;1354;Empenho para pagamento de diárias.;0;0;0"
#> [4] "1;Executivo;3;;90;Aplicações Diretas;339039;Outros Serviços de Terceiros - Pessoa Jurídic;;;29;Secretaria de Estado de Saúde;2961;Fundo Estadual de Saúde;296100;FUNDO ESTADUAL DE SAUDE - FES;40.197.840/000;BRASIL SUL IND E COM LTDA;22;Adicional do ICMS - FECP;E-08-001/1193 /2;10;Saúde;302;Assistência Hospitalar e Ambulatorial;09;PREGÃO ELETRÔNICO;7927;Decreto 46139 de 30 de outubro de 2017;0;0;0"
#> [5] "1;Executivo;3;;90;Aplicações Diretas;339030;Material de Consumo;;;21;Secretaria de Estado da Casa Civil e Desenvol;2104;Subsecretaria de Estado de Governo;120200;SUBSEC. DE REC. LOGISTICOS - SEFAZ-LOGISTICA;34.274.233/000;PETROBRAS DISTRIBUIDORA S/A;00;Ordinários Provenientes de Impostos;E-01/036/649/201;04;Administração;122;Administração Geral;09;PREGÃO ELETRÔNICO;561;SEGOV CANCFELAMENTO DE EMPENHO;0;0;0"
Compara tamanho antes do “squish” e depois
primeiras_linhas %>% str_length %>% sum
#> [1] 13323
primeiras_linhas %>% remove_espacos %>% str_length %>% sum
#> [1] 2051
Olhando pro fim do arquivo
# BUGADO
# read_lines(fname_2018,skip=linhas-10,locale=loc_bz)
lines_2018 <- read_lines(fname_2018,skip=5,
locale=loc_bz)
str_length(lines_2018) %>% sum
#> [1] 315562907
Remove espaços de todas as linhas
lines_2018_squished <- lines_2018 %>% remove_espacos
lines_2018_squished %>% str_length %>% sum
#> [1] 50092043
Salva arquivo enxuto em novo csv
fname_2018_squished <- "data/despesa2018_squished.csv"
lines_2018_squished %>% write_lines(fname_2018_squished)
Deleta da memória variáveis não mais necessárias
rm(lines_2018)
rm(lines_2018_squished)
Zipa o resultado
fname_2018_squished_zip <- repl_ext(fname_2018_squished,"zip")
zip::zip(fname_2018_squished_zip,fname_2018_squished)
Checa se encoding está ok
guess_encoding(fname_2018_squished_zip)
#> # A tibble: 3 x 2
#> encoding confidence
#> <chr> <dbl>
#> 1 UTF-8 1
#> 2 windows-1252 0.79
#> 3 windows-1250 0.35
Checa tamanho dos arquivos
dir_info("data") %>% select(path,size,modification_time)
#> # A tibble: 6 x 3
#> path size modification_time
#> <fs::path> <fs::bytes> <dttm>
#> 1 data/despesa.zip 125.32M 2019-03-29 07:40:36
#> 2 data/despesa2018.csv 301.04M 2019-04-06 12:04:14
#> 3 data/despesa2018.zip 17.98M 2019-03-29 16:40:21
#> 4 data/despesa2018_squished.csv 49.34M 2019-04-06 12:14:03
#> 5 data/despesa2018_squished.zip 9.08M 2019-04-06 12:14:07
#> 6 data/df_all.rds 24.37M 2019-03-30 12:05:39
file_delete(fname_2018)
file_delete(fname_2018_squished)