Skip to content

Commit

Permalink
update code for 2024 elections
Browse files Browse the repository at this point in the history
  • Loading branch information
rdahis committed Nov 26, 2024
1 parent 71d6780 commit 7d69ced
Show file tree
Hide file tree
Showing 17 changed files with 820 additions and 489 deletions.
15 changes: 7 additions & 8 deletions bases/br_tse_eleicoes/code/build.do
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ set varabbrev off

cd "~/Downloads/dados_TSE"

do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/clean_string.do"
do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/limpa_tipo_eleicao.do"
do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/limpa_instrucao.do"
do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/limpa_estado_civil.do"
do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/limpa_resultado.do"
do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/limpa_partido.do"
do "~/Dropbox/BD/mais/bases/br_tse_eleicoes/code/fnc/limpa_candidato.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/clean_string.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/limpa_tipo_eleicao.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/limpa_instrucao.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/limpa_estado_civil.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/limpa_resultado.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/limpa_partido.do"
do "~/Dropbox/BD/sdk/bases/br_tse_eleicoes/code/fnc/limpa_candidato.do"

//----------------------------------------------------------------------------//
// build
Expand All @@ -34,7 +34,6 @@ do "code/sub/resultados_municipio_zona.do"
do "code/sub/resultados_secao.do"
do "code/sub/prestacao_contas.do"

do "code/sub/cria_id_candidato.do"
do "code/sub/normalizacao_particao.do"
do "code/sub/agregacao.do"

Expand Down
45 changes: 24 additions & 21 deletions bases/br_tse_eleicoes/code/sub/agregacao.do
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

!mkdir "output/resultados_candidato_municipio"

foreach ano of numlist 1994(2)2022 {
foreach ano of numlist 1994(2)2024 {

!mkdir "output/resultados_candidato_municipio/ano=`ano'"

Expand All @@ -25,9 +25,10 @@ foreach ano of numlist 1994(2)2022 {
!mkdir "output/resultados_candidato_municipio/ano=`ano'/sigla_uf=`sigla_uf'"

import delimited "output/resultados_candidato_municipio_zona/ano=`ano'/sigla_uf=`sigla_uf'/resultados_candidato_municipio_zona.csv", ///
clear varn(1) encoding("utf-8") case(preserve)
clear varn(1) encoding("utf-8") case(preserve) stringcols(_all)

collapse (sum) votos, by(turno id_eleicao tipo_eleicao data_eleicao id_municipio id_municipio_tse cargo numero_partido sigla_partido numero_candidato sequencial_candidato id_candidato_bd resultado)
destring votos, replace
collapse (sum) votos, by(turno id_eleicao tipo_eleicao data_eleicao id_municipio id_municipio_tse cargo numero_partido sigla_partido titulo_eleitoral_candidato sequencial_candidato numero_candidato resultado)

export delimited "output/resultados_candidato_municipio/ano=`ano'/sigla_uf=`sigla_uf'/resultados_candidato_municipio.csv", replace

Expand All @@ -41,7 +42,7 @@ foreach ano of numlist 1994(2)2022 {

!mkdir "output/resultados_partido_municipio"

foreach ano of numlist 1994(2)2022 {
foreach ano of numlist 1994(2)2024 {

!mkdir "output/resultados_partido_municipio/ano=`ano'"

Expand All @@ -68,22 +69,22 @@ foreach ano of numlist 1994(2)2022 {

use "output/norm_candidatos.dta", clear
keep if mod(ano, 4) == 0
keep id_candidato_bd ano tipo_eleicao sigla_uf id_municipio_tse cargo numero numero_partido sigla_partido
tostring numero numero_partido id_candidato_bd, replace
keep ano tipo_eleicao sigla_uf id_municipio_tse cargo titulo_eleitoral numero numero_partido sigla_partido
tostring numero numero_partido, replace
tempfile candidatos_mod0
save `candidatos_mod0'

use "output/norm_candidatos.dta", clear
keep if mod(ano, 4) == 2 & cargo != "presidente"
keep id_candidato_bd ano tipo_eleicao sigla_uf cargo numero numero_partido sigla_partido
tostring numero numero_partido id_candidato_bd, replace
keep ano tipo_eleicao sigla_uf cargo titulo_eleitoral numero numero_partido sigla_partido
tostring numero numero_partido, replace
tempfile candidatos_mod2_estadual
save `candidatos_mod2_estadual'

use "output/norm_candidatos.dta", clear
keep if mod(ano, 4) == 2 & cargo == "presidente"
keep id_candidato_bd ano tipo_eleicao cargo numero numero_partido sigla_partido
tostring numero numero_partido id_candidato_bd, replace
keep ano tipo_eleicao cargo titulo_eleitoral numero numero_partido sigla_partido
tostring numero numero_partido, replace
tempfile candidatos_mod2_presid
save `candidatos_mod2_presid'

Expand All @@ -102,12 +103,12 @@ foreach ano of numlist 1945 1947 1955(5)1965 1950(4)1990 1989 {
cap gen id_eleicao = ""
cap gen data_eleicao = ""
cap gen numero_partido = ""
cap gen titulo_eleitoral_candidato = ""
cap gen sequencial_candidato = ""
cap gen numero_candidato = ""
cap gen id_candidato_bd = ""

collapse (sum) votos, by(turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido numero_candidato sequencial_candidato id_candidato_bd nome_candidato resultado)
order turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido numero_candidato sequencial_candidato id_candidato_bd nome_candidato resultado votos
collapse (sum) votos, by(turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido titulo_eleitoral_candidato sequencial_candidato numero_candidato nome_candidato resultado)
order turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido titulo_eleitoral_candidato sequencial_candidato numero_candidato nome_candidato resultado votos

duplicates tag turno tipo_eleicao sigla_uf id_municipio_tse cargo sequencial_candidato numero_candidato nome_candidato, gen(dup)
drop if dup > 0 // TODO: fazer limpeza mais cuidadosa, deletando linhas específicas
Expand All @@ -117,16 +118,16 @@ foreach ano of numlist 1945 1947 1955(5)1965 1950(4)1990 1989 {

}

foreach ano of numlist 1994(2)2022 {
foreach ano of numlist 1994(2)2024 {

!mkdir "output/resultados_candidato/ano=`ano'"

use "output/resultados_candidato_municipio_zona_`ano'.dta", clear

cap ren sequencial sequencial_candidato
cap ren numero numero_candidato
cap ren nome nome_candidato
cap ren nome_urna nome_urna_candidato
cap ren sequencial sequencial_candidato
cap ren numero numero_candidato
cap ren nome nome_candidato
cap ren nome_urna nome_urna_candidato

ren numero_candidato numero

Expand Down Expand Up @@ -170,14 +171,15 @@ foreach ano of numlist 1994(2)2022 {
}
*

ren titulo_eleitoral titulo_eleitoral_candidato
ren numero numero_candidato

replace sigla_uf = "" if cargo == "presidente"
replace id_municipio = . if mod(ano, 4) == 2
replace id_municipio_tse = . if mod(ano, 4) == 2

collapse (sum) votos, by(turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido numero_candidato sequencial_candidato id_candidato_bd nome_candidato resultado)
order turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido numero_candidato sequencial_candidato id_candidato_bd nome_candidato resultado votos
collapse (sum) votos, by(turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido titulo_eleitoral_candidato sequencial_candidato numero_candidato nome_candidato resultado)
order turno id_eleicao tipo_eleicao data_eleicao sigla_uf id_municipio id_municipio_tse cargo numero_partido sigla_partido titulo_eleitoral_candidato sequencial_candidato numero_candidato nome_candidato resultado votos

export delimited "output/resultados_candidato/ano=`ano'/resultados_candidato.csv", replace

Expand All @@ -190,7 +192,7 @@ foreach ano of numlist 1994(2)2022 {

!mkdir "output/detalhes_votacao_municipio"

foreach ano of numlist 1994(2)2022 {
foreach ano of numlist 2024 { // 1994(2)2024 {

!mkdir "output/detalhes_votacao_municipio/ano=`ano'"

Expand All @@ -216,3 +218,4 @@ foreach ano of numlist 1994(2)2022 {
}
}
*

117 changes: 106 additions & 11 deletions bases/br_tse_eleicoes/code/sub/candidatos.do
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ local ufs_2016 AC AL AM AP BA CE ES GO MA MG MS MT PA PB PE PI PR RJ RN RO
local ufs_2018 AC AL AM AP BA BR CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO
local ufs_2020 AC AL AM AP BA CE ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO
local ufs_2022 AC AL AM AP BA BR CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO
local ufs_2024 AC AL AM AP BA CE ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO

//------------------------//
// loops
Expand All @@ -32,7 +33,7 @@ keep id_municipio id_municipio_tse
tempfile municipio
save `municipio'

foreach ano of numlist 1994(2)2022 {
foreach ano of numlist 1994(2)2024 {

foreach uf in `ufs_`ano'' {

Expand Down Expand Up @@ -79,7 +80,7 @@ foreach ano of numlist 1994(2)2022 {
ren v54 resultado

}
else if `ano' == 2016 | `ano' >= 2020 {
else if `ano' == 2016 | (`ano' >= 2020 & `ano' <= 2022) {

drop in 1

Expand Down Expand Up @@ -114,6 +115,63 @@ foreach ano of numlist 1994(2)2022 {
ren v55 ocupacao
ren v58 resultado

}
else if `ano' == 2024 {

drop in 1

keep v3 v6 v7 v8 v9 v11 v12 v15 v16 v17 v18 v19 v21 v22 v26 v27 v36 v37 v38 v40 v42 v44 v46 v48 v50

ren v3 ano
ren v6 turno
ren v7 id_eleicao
ren v8 tipo_eleicao
ren v9 data_eleicao
ren v11 sigla_uf
ren v12 id_municipio_tse
ren v15 cargo
ren v16 sequencial
ren v17 numero
ren v18 nome
ren v19 nome_urna
ren v21 cpf
ren v22 email
ren v26 numero_partido
ren v27 sigla_partido
ren v36 sigla_uf_nascimento
ren v37 data_nascimento
ren v38 titulo_eleitoral
ren v40 genero
ren v42 instrucao
ren v44 estado_civil
ren v46 raca
ren v48 ocupacao
ren v50 resultado

tempfile basico
save `basico'

cap import delimited "input/consulta_cand/consulta_cand_complementar_`ano'/consulta_cand_complementar_`ano'_`uf'.csv", ///
delim(";") varn(nonames) stripquotes(yes) bindquotes(nobind) stringcols(_all) clear

drop in 1

keep v4 v5 v9 v11 v28

ren v4 id_eleicao
ren v5 sequencial
ren v9 nacionalidade
ren v11 municipio_nascimento
ren v28 situacao

tempfile complementar
save `complementar'

use `basico'

merge 1:1 id_eleicao sequencial using `complementar', nogenerate


}

//------------------//
Expand All @@ -128,11 +186,22 @@ foreach ano of numlist 1994(2)2022 {
order id_municipio, b(id_municipio_tse)

foreach k of varlist _all {
cap replace `k' = "" if inlist(`k', "#NULO#", "#NULO", "#NE#", "#NE", "##VERIFICAR BASE 1994##", "NÃO DIVULGÁVEL", "-1")
cap replace `k' = "" if ///
`k' == "#NULO#" | ///
`k' == "#NULO" | ///
`k' == "#NE#" | ///
`k' == "#NE" | ///
`k' == "#NI#" | ///
`k' == "##VERIFICAR BASE 1994##" | ///
`k' == "-1" | ///
`k' == "-4" | ///
`k' == "NÃO DIVULGÁVEL" | ///
`k' == "Não divulgável" | ///
`k' == "Não Divulgável"
}
*

foreach k in tipo_eleicao cargo situacao nacionalidade genero instrucao estado_civil raca ocupacao resultado {
foreach k in tipo_eleicao cargo nacionalidade genero instrucao estado_civil raca ocupacao situacao resultado {
cap clean_string `k'
}
foreach k in nome nome_urna municipio_nascimento {
Expand All @@ -155,18 +224,44 @@ foreach ano of numlist 1994(2)2022 {
replace cpf = "00000" + cpf if length(cpf) == 6
replace cpf = "000000" + cpf if length(cpf) == 5

replace titulo_eleitoral = "" if titulo_eleitoral == "000000000000" | titulo_eleitoral == "0"

replace titulo_eleitoral = "0" + titulo_eleitoral if length(titulo_eleitoral) == 11
replace titulo_eleitoral = "00" + titulo_eleitoral if length(titulo_eleitoral) == 10
replace titulo_eleitoral = "000" + titulo_eleitoral if length(titulo_eleitoral) == 9
replace titulo_eleitoral = "0000" + titulo_eleitoral if length(titulo_eleitoral) == 8
replace titulo_eleitoral = "00000" + titulo_eleitoral if length(titulo_eleitoral) == 7
replace titulo_eleitoral = "000000" + titulo_eleitoral if length(titulo_eleitoral) == 6

replace titulo_eleitoral = "00000" + substr(titulo_eleitoral, 1, 5) + substr(titulo_eleitoral, 11, 2) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 6, 5) == " "
replace titulo_eleitoral = "0000" + substr(titulo_eleitoral, 1, 6) + substr(titulo_eleitoral, 11, 2) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 7, 4) == " "
replace titulo_eleitoral = "000" + substr(titulo_eleitoral, 1, 7) + substr(titulo_eleitoral, 11, 2) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 8, 3) == " "
replace titulo_eleitoral = "00" + substr(titulo_eleitoral, 1, 8) + substr(titulo_eleitoral, 11, 2) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 9, 2) == " "
replace titulo_eleitoral = "0" + substr(titulo_eleitoral, 1, 9) + substr(titulo_eleitoral, 11, 2) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 10, 1) == " "

replace titulo_eleitoral = substr(titulo_eleitoral, 1, 1) + "0" + substr(titulo_eleitoral, 3, 10) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 2, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 2) + "0" + substr(titulo_eleitoral, 4, 9) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 3, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 3) + "0" + substr(titulo_eleitoral, 5, 8) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 4, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 4) + "0" + substr(titulo_eleitoral, 6, 7) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 5, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 5) + "0" + substr(titulo_eleitoral, 7, 6) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 6, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 6) + "0" + substr(titulo_eleitoral, 8, 5) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 7, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 7) + "0" + substr(titulo_eleitoral, 9, 4) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 8, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 8) + "0" + substr(titulo_eleitoral, 10, 3) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 9, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 9) + "0" + substr(titulo_eleitoral, 11, 2) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 10, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 10) + "0" + substr(titulo_eleitoral, 12, 1) if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 11, 1) == " "
replace titulo_eleitoral = substr(titulo_eleitoral, 1, 11) + "0" if length(titulo_eleitoral) == 12 & substr(titulo_eleitoral, 12, 1) == " "

replace cargo = "vice-presidente" if cargo == "vice presidente"
replace cargo = "vice-prefeito" if cargo == "vice prefeito"

replace genero = "" if genero == "nao divulgavel"
replace genero = "" if genero == "nao informado"
replace genero = "" if genero == "nao divulgavel" | genero == "nao informado"

replace nacionalidade = "brasileira" if nacionalidade == "brasileira nata"
replace nacionalidade = "" if nacionalidade == "nao divulgavel"
replace nacionalidade = "" if nacionalidade == "nao informado"
replace nacionalidade = "" if nacionalidade == "nao divulgavel" | nacionalidade == "nao informado" | nacionalidade == "nao informada"

replace sigla_uf_nascimento = "" if sigla_uf_nascimento == " "

cap replace raca = "" if raca == "sem informacao"
cap replace raca = "" if raca == "nao divulgavel"
cap replace raca = "" if raca == "sem informacao" | raca == "nao divulgavel" | raca == "nao informado" | raca == "nao informada"

replace resultado = "" if inlist(resultado, "-1", "1", "4")

Expand All @@ -177,7 +272,7 @@ foreach ano of numlist 1994(2)2022 {
//------------------//

foreach k in eleicao nascimento {
replace data_`k' = substr(data_`k', 7, 4) + "-" + substr(data_`k', 4, 2) + "-" + substr(data_`k', 1, 2)
replace data_`k' = substr(data_`k', 7, 4) + "-" + substr(data_`k', 4, 2) + "-" + substr(data_`k', 1, 2) if length(data_`k') > 0
replace data_`k' = "" if real(substr(data_`k', 1, 4)) < 1900
}

Expand Down
Loading

0 comments on commit 7d69ced

Please sign in to comment.