Skip to content

Instantly share code, notes, and snippets.

@fernandobarbalho
Last active May 25, 2021 17:33
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fernandobarbalho/61778bc58ad44735f116de94973c165b to your computer and use it in GitHub Desktop.
Save fernandobarbalho/61778bc58ad44735f116de94973c165b to your computer and use it in GitHub Desktop.
Script para cálculo do índice de autonomia da FIRJAN usando o pacote rsiconfi
# install.packages("devtools")
devtools::install_github("tchiluanda/rsiconfi")
library(rsiconfi)
library(dplyr)
library(tidyr)
###########Trabalhando as despesas
#Monta um vetor com todos os códigos de UFs do Brasil
#Vide https://atendimento.tecnospeed.com.br/hc/pt-br/articles/360021494734-Tabela-de-C%C3%B3digo-de-UF-do-IBGE
todos_estados<-11 #para efeito de teste considera-se aqui apenas o estado de Rondônia
#todos_estados<-c(11:17,21:29,31:35,41:43,50:53) #para execução completa tire o comentário dessa linha
#Monta um vetor com as contas que se referem às despesas com a burocracia nos municípios
#para saber as contas disponíveis use a função get_account_dca, como indicado abaixo
# df_conta_dca<- get_account_dca(2018, "I-E", c("2312908") )
contas_depesas_burocaracia<- c("01", #Despesa com legislativo,
"04" #Despesa com administração do estado
)
#chama função que traz dados contábeis anuais de todos os municípios de um conjunto de estados
#Atenção, a execução da linha abaixo pode demorar várias horas para execução.
#Caso queira fazer somente um teste sugerimos substituir o vetor de estados.
#Considere usar apenas o estado 11-Rondônia para testes
df_desp_mun<- get_dca_mun_state(year= 2018, #ano a que se refere os dados. poderia ser um vetor de anos
annex= "I-E", #Anexo de Contas Anuais que se refere a despesa por função
state = todos_estados, #Informa o conjunto de UFs a que se refere os dados recuperados. nesse caso todos as UFs
arg_cod_conta = contas_depesas_burocaracia#Contas associadas a despesa com burocracia
)
#O vetor df_rec_mun apresenta várias linhas para o mesma chave composta de cod_ibge e conta.
#Deve-se escolher a fase da despesa para não haver distorção nos dados.
#Para esse caso vamos filtar as despesas liquidadas, presentes na variável coluna
#Aproveitamos para usar no dataset apenas as variáveis cod_ibge, conta e valor
df_desp_mun<- df_desp_mun %>%
filter(coluna== "Despesas Liquidadas") %>%
select(cod_ibge, conta, valor)
#Transpõe a matriz de despesa para os tipos de despesa virarem coluna
df_desp_mun_tidy <- df_desp_mun %>%
spread(conta,valor)
names(df_desp_mun_tidy)[2:3]<- c("desp_legislativa","desp_administracao")
###########Trabalhando as receitas
#Monta um vetor com as contas que se referem às receitas que são consideradas no cálculo
#para saber as contas disponíveis use a função get_account_dca, como indicado abaixo
# df_conta_dca<- get_account_dca(2018, "I-C", c("2312908") )
contas_receita<- c("1.0.0.0.00.0.0", #Receitas Correntes ,
"1.7.0.0.00.0.0", #Transferências correntes,
"RO1.7.2.8.01.1.0", #Cota-parte do ICMS,
"RO1.7.2.8.01.2.0", #Cota-parte do IPVA,
"RO1.7.1.8.01.5.0", #Cota-parte do ITR,
"1.7.2.8.01.3.0 Cota-Parte do IPI"#Cota-parte do IPI
)
df_rec_mun<- get_dca_mun_state(year= 2018, #ano a que se refere os dados. poderia ser um vetor de anos
annex= "I-C", #Anexo de Contas Anuais que se refere a receita orçamentária
state = todos_estados, #Informa o conjunto de UFs a que se refere os dados recuperados. nesse caso todas as UFs
arg_cod_conta = contas_receita#Contas associadas a receitas econômicas municipais
)
#para todas as receitas devem ser excluídas as deduções relativas a FUNDEB, transferências constitucionais e outras deduções da receita da receita bruta realizada.
#Para tanto, deve-se trabalhar com as informações que estão na variável "coluna"
df_rec_liq<- df_rec_mun %>%
mutate(valor = ifelse(coluna== "Receitas Brutas Realizadas", valor, -valor)) %>% #Se não for Receita Bruta realizada, trata-se de dedução, o valor deve ser multipliado por -1
group_by(cod_ibge, cod_conta) %>%
summarise(
valor_liquido = sum(valor)
) %>%
spread(cod_conta, valor_liquido) %>%
ungroup() %>%
mutate(rec_econ = RO1.0.0.0.00.0.0 - RO1.7.0.0.00.0.0 + rowSums(.[4:7])) %>%
select(1,2,8)
names(df_rec_liq)[2:3]<-c("receitas_correntes_liq", "receita_economica_mun")
####Trabalha em conjunto as informações de receita e despesa e calcula o índice FIRJAN de autonomia
df_resultado<-df_desp_mun_tidy %>%
inner_join(df_rec_liq) %>%
mutate(indicador = (receita_economica_mun-
desp_legislativa-
desp_administracao)/
receitas_correntes_liq,
IFGF_autonomia = case_when(
indicador > 0.25 ~ 1,
indicador < 0.25 & indicador >0 ~ indicador/0.25,
TRUE ~ 0))
@fernandobarbalho
Copy link
Author

get_rreo(year=2016,
period=6,
report_tp=1,
annex = "03",
entity=c("2507507","2408102","2111300"))

Olá, bom dia.

Antes de mais nada, peço desculpa pela demora a responder. Por algum motivo não fui alertado de sua mensagem.

Tentei executar o código que você indicou e funcionou corretamente por aqui, como pode ser visto abaixo. Há cerca de um mês estávamos com alguns problemas de infra-estrutura que o nosso pessoal da TI estava enfrentando. O problema já foi resolvido e acho que isso era o que causava o erro que você enfrentou. Convido-o a tentar novamente.

df_rreo<-

  • get_rreo(year=2016,
  •      period=6,
    
  •      report_tp=1,
    
  •      annex = "03",
    
  •      entity=c("2507507","2408102","2111300"))
    

[1] 1
Joining, by = "esfera"
[1] "http://apidatalake.tesouro.gov.br/ords/siconfi/tt/rreo?an_exercicio=2016&nr_periodo=6&co_tipo_demonstrativo=RREO&no_anexo=RREO-Anexo%2003&id_ente=2507507"
[1] 336
[1] "http://apidatalake.tesouro.gov.br/ords/siconfi/tt/rreo?an_exercicio=2016&nr_periodo=6&co_tipo_demonstrativo=RREO&no_anexo=RREO-Anexo%2003&id_ente=2408102"
[1] 328
[1] "http://apidatalake.tesouro.gov.br/ords/siconfi/tt/rreo?an_exercicio=2016&nr_periodo=6&co_tipo_demonstrativo=RREO&no_anexo=RREO-Anexo%2003&id_ente=2111300"
[1] 335

head(df_rreo)
exercicio demonstrativo periodo periodicidade instituicao cod_ibge uf
1 2016 RREO 6 B Prefeitura Municipal de João Pessoa - PB 2507507 PB
2 2016 RREO 6 B Prefeitura Municipal de João Pessoa - PB 2507507 PB
3 2016 RREO 6 B Prefeitura Municipal de João Pessoa - PB 2507507 PB
4 2016 RREO 6 B Prefeitura Municipal de João Pessoa - PB 2507507 PB
5 2016 RREO 6 B Prefeitura Municipal de João Pessoa - PB 2507507 PB
6 2016 RREO 6 B Prefeitura Municipal de João Pessoa - PB 2507507 PB
populacao anexo esfera rotulo coluna cod_conta

@fernandobarbalho
Copy link
Author

fernandobarbalho commented May 14, 2021

@m-alvarenga,
não poderia ser algo assim?

library(rsiconfi)
library(dplyr)
dados<-get_dca_mun_state(year= 2018,
annex= "I-E",
state = 35,
arg_cod_conta = 12)
dados_osasco <- dados %>% filter(cod_ibge==3534401)
remove(dados)

usar o purrr /lapply para os outros anos

http://apidatalake.tesouro.gov.br/ords/siconfi/tt/dca?an_exercicio=2018&no_anexo=DCA-Anexo%20I-E&id_ente=3534401

também acho esse pacote do Fernando incrível :)

Obrigado Steven. :)

Uma opção é usar a função get_dca e especificar apenas as entidades que se quer buscar, como no caso abaixo

rreo_osasco<-

  • get_dca(year= 2018,
  •               annex= "I-E",
    
  •               arg_cod_conta = 12,
    
  •               entity= 3534401)
    

Joining, by = "esfera"
[1] "http://apidatalake.tesouro.gov.br/ords/siconfi/tt/dca?an_exercicio=2018&no_anexo=DCA-Anexo%20I-E&id_ente=3534401"
[1] 361

head(rreo_osasco)
exercicio instituicao cod_ibge uf anexo rotulo
1 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
2 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
3 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
4 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
5 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
coluna cod_conta conta valor populacao cod_interno
1 Despesas Empenhadas TotalDespesas 12 - Educação 632103601 696382 12
2 Despesas Liquidadas TotalDespesas 12 - Educação 615395512 696382 12
3 Despesas Pagas TotalDespesas 12 - Educação 565286850 696382 12
4 Inscrição de Restos a Pagar Não Processados TotalDespesas 12 - Educação 16708089 696382 12
5 Inscrição de Restos a Pagar Processados TotalDespesas 12 - Educação 50108662 696382 12

@fernandobarbalho
Copy link
Author

Fernando, esse pacote é incrível e o seu trabalho é de extrema contribuição!

Gostaria de saber se existe a possibilidade de baixar dados de municípios específicos ao inves de todos os municípios do estado.

Quando preciso extrair dados de despesas em educação Osasco, por exemplo, preciso baixar todos os dados de SP:
get_dca_mun_state(year= 2018,
annex= "I-E",
state = 35
arg_cod_conta = 12
)
Para então filtrar os dados de Osasco (código 3534401).

O que eu gostaria de fazer era extrair somente os dados do município de Osasco, existe essa possiblidade no pacote?

Desde já agradeço a atenção e o ótimo trabalho!

Obrigado Alvarenga,

Você pode usar a função get_dca e especificar as entidades que quer trabalhar. Veja o exemplo abaixo:

rreo_osasco<-

  • get_dca(year= 2018,
  •               annex= "I-E",
    
  •               arg_cod_conta = 12,
    
  •               entity= 3534401)
    

Joining, by = "esfera"
[1] "http://apidatalake.tesouro.gov.br/ords/siconfi/tt/dca?an_exercicio=2018&no_anexo=DCA-Anexo%20I-E&id_ente=3534401"
[1] 361

head(rreo_osasco)
exercicio instituicao cod_ibge uf anexo rotulo
1 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
2 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
3 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
4 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
5 2018 Prefeitura Municipal de Osasco - SP 3534401 SP DCA-Anexo I-E Total Geral da Despesa por Função
coluna cod_conta conta valor populacao cod_interno
1 Despesas Empenhadas TotalDespesas 12 - Educação 632103601 696382 12
2 Despesas Liquidadas TotalDespesas 12 - Educação 615395512 696382 12
3 Despesas Pagas TotalDespesas 12 - Educação 565286850 696382 12
4 Inscrição de Restos a Pagar Não Processados TotalDespesas 12 - Educação 16708089 696382 12
5 Inscrição de Restos a Pagar Processados TotalDespesas 12 - Educação 50108662 696382 12

@m-alvarenga
Copy link

Fernando, perdão a demora para responder, outras demandas me ocuparam no estágio e na graduação e não tive tempo de testar código até hoje pela manhã.

Muito obrigado pela resposta, funcionou perfeitamente aqui! Agora a execução do código fica muito mais rápida quando eu estiver analisando dados de poucos municípios do estado.

Att, Alvarenga.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment