A participação eleitoral constitui um dos elementos fundamentais para o funcionamento de uma democracia representativa. Entretanto, a ausência de parte do eleitorado às urnas representa um fenômeno que merece atenção, especialmente quando observadas as diferenças de participação entre grupos populacionais e regiões.
Nesse contexto, a análise do comparecimento e da abstenção eleitoral permite investigar como a participação nas eleições se distribui entre diferentes segmentos da população, possibilitando identificar padrões associados a características demográficas, sociais, educacionais e territoriais.
Este projeto tem como objetivo analisar a distribuição do comparecimento e da abstenção eleitoral no primeiro turno das Eleições Gerais de 2026 no estado de Pernambuco, buscando identificar possíveis associações entre a ausência às urnas, as características sociodemográficas do eleitorado e os fatores territoriais.
Para isso, serão utilizados dados disponibilizados pelo Tribunal Superior Eleitoral (TSE), por meio do conjunto de dados Comparecimento e Abstenção 2026.
A investigação será conduzida por meio de técnicas de análise exploratória de dados, estatística descritiva e visualização de informações, considerando as seguintes dimensões:
A partir dessas dimensões, pretende-se investigar quais grupos apresentam maiores taxas de abstenção, como esses indicadores variam entre os municípios pernambucanos e quais padrões podem ser identificados nos dados.
É importante destacar que a base utilizada apresenta informações agregadas por combinações de características dos eleitores. Portanto, os resultados permitirão identificar associações e padrões entre grupos populacionais, mas não estabelecer relações individuais de causalidade.
Para a execução do projeto, serão utilizadas bibliotecas da linguagem R voltadas à manipulação, transformação e análise dos dados.
Até o momento, será utilizada a biblioteca tidyverse,
que reúne ferramentas para manipulação de dados, importação de arquivos
e outras operações necessárias ao desenvolvimento da análise.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.1 ✔ readr 2.1.6
## ✔ forcats 1.0.1 ✔ stringr 1.6.0
## ✔ ggplot2 4.0.2 ✔ tibble 3.3.1
## ✔ lubridate 1.9.5 ✔ tidyr 1.3.2
## ✔ purrr 1.2.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Caso o pacote ainda não esteja instalado no ambiente, sua instalação poderá ser realizada com:
install.packages("tidyverse")
Os dados utilizados neste projeto são provenientes do Tribunal Superior Eleitoral (TSE), responsável pela disponibilização de informações estatísticas relacionadas ao processo eleitoral brasileiro.
O conjunto selecionado, denominado Perfil de Comparecimento e Abstenção, apresenta informações sobre a quantidade de eleitores aptos, comparecimentos e abstenções, organizadas de acordo com diferentes características sociodemográficas e eleitorais.
O arquivo utilizado corresponde ao estado de Pernambuco (PE), referente ao primeiro turno das Eleições Gerais de 2026.
Fonte: Portal de Dados Abertos do TSE.
A base apresenta uma estrutura tabular, na qual cada registro representa um agrupamento de eleitores que compartilham determinadas características.
Diferentemente de uma base individualizada, não existem registros específicos para cada eleitor. Em vez disso, são disponibilizadas quantidades agregadas de pessoas que pertencem a determinadas combinações de características sociodemográficas e eleitorais.
As variáveis presentes no arquivo podem ser organizadas nas seguintes categorias:
| Categoria | Variáveis | Descrição |
|---|---|---|
| Identificação | DT_GERACAO, HH_GERACAO,
ANO_ELEICAO, NR_TURNO |
Informações sobre a geração do arquivo e a eleição de referência. |
| Localização | SG_UF, CD_MUNICIPIO,
NM_MUNICIPIO, NR_ZONA |
Identificação geográfica e eleitoral do registro. |
| Demográfica | CD_GENERO, DS_GENERO,
CD_FAIXA_ETARIA, DS_FAIXA_ETARIA |
Gênero e faixa etária dos eleitores. |
| Social | CD_ESTADO_CIVIL,
DS_ESTADO_CIVIL, CD_COR_RACA,
DS_COR_RACA |
Estado civil e raça/cor autodeclarada. |
| Educacional | CD_GRAU_INSTRUCAO,
DS_GRAU_INSTRUCAO |
Grau de instrução dos eleitores. |
| Identidade | CD_IDENTIDADE_GENERO,
DS_IDENTIDADE_GENERO |
Identidade de gênero autodeclarada. |
| Étnico-cultural | CD_QUILOMBOLA, DS_QUILOMBOLA,
CD_GRUPO_INDIGENA, DS_GRUPO_INDIGENA,
CD_IDIOMA_INDIGENA, DS_IDIOMA_INDIGENA,
CD_IDIOMA_QUILOMBOLA,
DS_IDIOMA_QUILOMBOLA |
Informações sobre pertencimento quilombola e indígena e domínio de idiomas correspondentes. |
| Acessibilidade | CD_INTERPRETE_LIBRAS,
DS_INTERPRETE_LIBRAS |
Indicadores relacionados à interpretação de Libras. |
| Participação eleitoral | QT_APTOS, QT_COMPARECIMENTO,
QT_ABSTENCAO |
Quantidades de eleitores aptos, comparecimentos e abstenções. |
| Deficiência e mobilidade | Variáveis QT_COMPAREC_DEFICIENTES e
QT_ABST_DEFICIENTES |
Quantidades de comparecimentos e abstenções de eleitores com deficiência ou mobilidade reduzida. |
| Transferência temporária | QT_COMPAREC_TTE,
QT_ABST_TTE |
Quantidades de comparecimentos e abstenções de eleitores com transferência temporária. |
| Obrigatoriedade do voto | Variáveis QT_COMPAREC_FACULTATIVO,
QT_ABST_FACULTATIVO, QT_COMPAREC_OBRIGATORIO,
QT_ABST_OBRIGATORIO |
Quantidades de comparecimentos e abstenções conforme a obrigatoriedade do voto. |
| Deficiência e obrigatoriedade | Variáveis QT_COMPAREC_DEFIC_FACULTATIVO,
QT_ABST_DEFIC_FACULTATIVO,
QT_COMPAREC_DEFIC_OBRIGATORIO,
QT_ABST_DEFIC_OBRIGATORIO |
Quantidades de comparecimentos e abstenções de eleitores com deficiência ou mobilidade reduzida, considerando a obrigatoriedade do voto. |
Observação: as variáveis são apresentadas conforme o leiaute disponibilizado pelo TSE junto a base de dados. Algumas denominações aparecem quebradas em mais de uma linha no documento original, mas correspondem a um único nome de coluna.
Inicialmente, será realizada a leitura do arquivo CSV disponibilizado pelo TSE.
De acordo com as orientações presentes no documento de leiaute da base, os arquivos utilizam codificação Latin 1, possuem campos separados por ponto e vírgula e apresentam os valores entre aspas.
dados_originais <- read_delim(
"perfil_comparecimento_abstencao_2026_PE.csv",
delim = ";",
locale = locale(encoding = "Latin1"),
na = c("#NULO", "#NE"),
show_col_types = FALSE
)
Após a importação, é possível inspecionar a estrutura do conjunto de dados, identificando a quantidade de registros, as variáveis disponíveis e seus respectivos tipos.
# Visualização da estrutura das variáveis
glimpse(dados_originais)
## Rows: 467,244
## Columns: 45
## $ DT_GERACAO <chr> "13/10/2026", "13/10/2026", "13/10/2026"…
## $ HH_GERACAO <time> 16:46:32, 16:46:32, 16:46:32, 16:46:32,…
## $ ANO_ELEICAO <dbl> 2026, 2026, 2026, 2026, 2026, 2026, 2026…
## $ NR_TURNO <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ SG_UF <chr> "PE", "PE", "PE", "PE", "PE", "PE", "PE"…
## $ CD_MUNICIPIO <dbl> 25674, 25674, 25674, 25674, 25674, 25674…
## $ NM_MUNICIPIO <chr> "SÃO JOSÉ DA COROA GRANDE", "SÃO JOSÉ DA…
## $ NR_ZONA <dbl> 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, …
## $ CD_GENERO <dbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ DS_GENERO <chr> "MASCULINO", "MASCULINO", "MASCULINO", "…
## $ CD_ESTADO_CIVIL <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ DS_ESTADO_CIVIL <chr> "SOLTEIRO", "SOLTEIRO", "SOLTEIRO", "SOL…
## $ CD_FAIXA_ETARIA <dbl> 3034, 3034, 3539, 3539, 3539, 3539, 3539…
## $ DS_FAIXA_ETARIA <chr> "30 a 34 anos", "30 a 34 anos", "35 a 39…
## $ CD_GRAU_INSTRUCAO <dbl> 7, 8, 2, 3, 4, 4, 5, 5, 6, 7, 8, 1, 2, 2…
## $ DS_GRAU_INSTRUCAO <chr> "SUPERIOR INCOMPLETO", "SUPERIOR COMPLET…
## $ CD_COR_RACA <dbl> -1, 1, 2, 3, 1, 3, 3, 3, 1, 3, -1, 2, 1,…
## $ DS_COR_RACA <chr> "NÃO INFORMADO", "Branca", "Preta", "Par…
## $ CD_QUILOMBOLA <dbl> -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, 2, 2,…
## $ DS_QUILOMBOLA <chr> "NÃO INFORMADO", "NÃO", "NÃO", "NÃO", "N…
## $ CD_INTERPRETE_LIBRAS <dbl> -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1, 2, 2,…
## $ DS_INTERPRETE_LIBRAS <chr> "NÃO INFORMADO", "NÃO", "NÃO", "NÃO", "N…
## $ CD_IDENTIDADE_GENERO <dbl> -1, 1, 1, 1, 1, 3, 1, 3, 1, 1, -1, 1, 1,…
## $ DS_IDENTIDADE_GENERO <chr> "NÃO INFORMADO", "Cisgênero", "Cisgênero…
## $ CD_IDIOMA_INDIGENA <dbl> -1, -1, 2, -1, -1, 2, -1, -1, -1, 2, -1,…
## $ DS_IDIOMA_INDIGENA <chr> "NÃO INFORMADO", "NÃO INFORMADO", "NÃO",…
## $ CD_GRUPO_INDIGENA <dbl> -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, …
## $ DS_GRUPO_INDIGENA <chr> "Não informado", "Não informado", "Não i…
## $ CD_IDIOMA_QUILOMBOLA <dbl> -1, -1, 2, -1, -1, 2, -1, -1, -1, 2, -1,…
## $ DS_IDIOMA_QUILOMBOLA <chr> "NÃO INFORMADO", "NÃO INFORMADO", "NÃO",…
## $ QT_APTOS <dbl> 41, 2, 1, 30, 1, 1, 13, 1, 3, 2, 17, 2, …
## $ QT_COMPARECIMENTO <dbl> 30, 2, 1, 18, 1, 1, 5, 1, 2, 1, 12, 1, 1…
## $ QT_ABSTENCAO <dbl> 11, 0, 0, 12, 0, 0, 8, 0, 1, 1, 5, 1, 0,…
## $ QT_COMPARECIMENTO_DEFICIENCIA <dbl> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_ABSTENCAO_DEFICIENCIA <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_COMPARECIMENTO_TTE <dbl> 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_ABSTENCAO_TTE <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_COMPAREC_FACULTATIVO <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0…
## $ QT_ABST_FACULTATIVO <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0…
## $ QT_COMPAREC_OBRIGATORIO <dbl> 30, 2, 1, 18, 1, 1, 5, 1, 2, 1, 12, 0, 1…
## $ QT_ABST_OBRIGATORIO <dbl> 11, 0, 0, 12, 0, 0, 8, 0, 1, 1, 5, 0, 0,…
## $ QT_COMPAREC_DEFIC_FACULTATIVO <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_ABST_DEFIC_FACULTATIVO <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_COMPAREC_DEFIC_OBRIGATORIO <dbl> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ QT_ABST_DEFIC_OBRIGATORIO <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
# Quantidade de registros e variáveis
dim(dados_originais)
## [1] 467244 45
# Resumo estatístico das variáveis
summary(dados_originais)
## DT_GERACAO HH_GERACAO ANO_ELEICAO NR_TURNO
## Length:467244 Min. :16:46:32 Min. :2026 Min. :1
## Class :character 1st Qu.:16:46:32 1st Qu.:2026 1st Qu.:1
## Mode :character Median :16:46:32 Median :2026 Median :1
## Mean :16:46:32 Mean :2026 Mean :1
## 3rd Qu.:16:46:32 3rd Qu.:2026 3rd Qu.:1
## Max. :16:46:32 Max. :2026 Max. :1
## SG_UF CD_MUNICIPIO NM_MUNICIPIO NR_ZONA
## Length:467244 Min. :23000 Length:467244 Min. : 1.00
## Class :character 1st Qu.:23817 Class :character 1st Qu.: 35.00
## Mode :character Median :24759 Mode :character Median : 68.00
## Mean :24667 Mean : 70.33
## 3rd Qu.:25313 3rd Qu.:105.00
## Max. :30015 Max. :150.00
## CD_GENERO DS_GENERO CD_ESTADO_CIVIL DS_ESTADO_CIVIL
## Min. :0.00 Length:467244 Min. :0.000 Length:467244
## 1st Qu.:2.00 Class :character 1st Qu.:1.000 Class :character
## Median :4.00 Mode :character Median :3.000 Mode :character
## Mean :3.08 Mean :3.153
## 3rd Qu.:4.00 3rd Qu.:3.000
## Max. :4.00 Max. :9.000
## CD_FAIXA_ETARIA DS_FAIXA_ETARIA CD_GRAU_INSTRUCAO DS_GRAU_INSTRUCAO
## Min. : -3 Length:467244 Min. :0.00 Length:467244
## 1st Qu.:3034 Class :character 1st Qu.:3.00 Class :character
## Median :4549 Mode :character Median :5.00 Mode :character
## Mean :4713 Mean :4.46
## 3rd Qu.:6064 3rd Qu.:6.00
## Max. :9999 Max. :8.00
## CD_COR_RACA DS_COR_RACA CD_QUILOMBOLA DS_QUILOMBOLA
## Min. :-1.000 Length:467244 Min. :-1.000 Length:467244
## 1st Qu.:-1.000 Class :character 1st Qu.:-1.000 Class :character
## Median : 1.000 Mode :character Median : 2.000 Mode :character
## Mean : 1.277 Mean : 1.074
## 3rd Qu.: 3.000 3rd Qu.: 2.000
## Max. : 5.000 Max. : 2.000
## CD_INTERPRETE_LIBRAS DS_INTERPRETE_LIBRAS CD_IDENTIDADE_GENERO
## Min. :-1.000 Length:467244 Min. :-1.0000
## 1st Qu.:-1.000 Class :character 1st Qu.:-1.0000
## Median : 2.000 Mode :character Median : 1.0000
## Mean : 1.066 Mean : 0.6593
## 3rd Qu.: 2.000 3rd Qu.: 1.0000
## Max. : 2.000 Max. : 3.0000
## DS_IDENTIDADE_GENERO CD_IDIOMA_INDIGENA DS_IDIOMA_INDIGENA CD_GRUPO_INDIGENA
## Length:467244 Min. :-1.0000 Length:467244 Min. : -1.0000
## Class :character 1st Qu.:-1.0000 Class :character 1st Qu.: -1.0000
## Mode :character Median :-1.0000 Mode :character Median : -1.0000
## Mean :-0.4464 Mean : 0.7043
## 3rd Qu.:-1.0000 3rd Qu.: -1.0000
## Max. : 2.0000 Max. :305.0000
## DS_GRUPO_INDIGENA CD_IDIOMA_QUILOMBOLA DS_IDIOMA_QUILOMBOLA QT_APTOS
## Length:467244 Min. :-1.0000 Length:467244 Min. : 1.00
## Class :character 1st Qu.:-1.0000 Class :character 1st Qu.: 1.00
## Mode :character Median :-1.0000 Mode :character Median : 2.00
## Mean :-0.4481 Mean : 15.46
## 3rd Qu.:-1.0000 3rd Qu.: 7.00
## Max. : 2.0000 Max. :2320.00
## QT_COMPARECIMENTO QT_ABSTENCAO QT_COMPARECIMENTO_DEFICIENCIA
## Min. : 0.00 Min. : 0.000 Min. : 0.0000
## 1st Qu.: 1.00 1st Qu.: 0.000 1st Qu.: 0.0000
## Median : 1.00 Median : 0.000 Median : 0.0000
## Mean : 12.66 Mean : 2.809 Mean : 0.1196
## 3rd Qu.: 5.00 3rd Qu.: 1.000 3rd Qu.: 0.0000
## Max. :1999.00 Max. :564.000 Max. :23.0000
## QT_ABSTENCAO_DEFICIENCIA QT_COMPARECIMENTO_TTE QT_ABSTENCAO_TTE
## Min. :0.00000 Min. : 0.00000 Min. :0.000000
## 1st Qu.:0.00000 1st Qu.: 0.00000 1st Qu.:0.000000
## Median :0.00000 Median : 0.00000 Median :0.000000
## Mean :0.05088 Mean : 0.05755 Mean :0.003054
## 3rd Qu.:0.00000 3rd Qu.: 0.00000 3rd Qu.:0.000000
## Max. :9.00000 Max. :82.00000 Max. :5.000000
## QT_COMPAREC_FACULTATIVO QT_ABST_FACULTATIVO QT_COMPAREC_OBRIGATORIO
## Min. : 0.000 Min. : 0.0000 Min. : 0.00
## 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.00
## Median : 0.000 Median : 0.0000 Median : 1.00
## Mean : 1.426 Mean : 0.9317 Mean : 11.23
## 3rd Qu.: 0.000 3rd Qu.: 0.0000 3rd Qu.: 3.00
## Max. :836.000 Max. :274.0000 Max. :1999.00
## QT_ABST_OBRIGATORIO QT_COMPAREC_DEFIC_FACULTATIVO QT_ABST_DEFIC_FACULTATIVO
## Min. : 0.000 Min. : 0.00000 Min. :0.0000
## 1st Qu.: 0.000 1st Qu.: 0.00000 1st Qu.:0.0000
## Median : 0.000 Median : 0.00000 Median :0.0000
## Mean : 1.877 Mean : 0.03551 Mean :0.0336
## 3rd Qu.: 1.000 3rd Qu.: 0.00000 3rd Qu.:0.0000
## Max. :564.000 Max. :12.00000 Max. :9.0000
## QT_COMPAREC_DEFIC_OBRIGATORIO QT_ABST_DEFIC_OBRIGATORIO
## Min. : 0.00000 Min. :0.00000
## 1st Qu.: 0.00000 1st Qu.:0.00000
## Median : 0.00000 Median :0.00000
## Mean : 0.08407 Mean :0.01728
## 3rd Qu.: 0.00000 3rd Qu.:0.00000
## Max. :23.00000 Max. :6.00000
Inicialmente, será criado um novo conjunto de dados para as análises, preservando a base original.
Embora o arquivo utilizado já corresponda a Pernambuco, será realizada uma verificação explícita da unidade federativa e do turno da eleição, garantindo que o recorte da investigação esteja corretamente delimitado.
dados <- dados_originais |>
filter(
SG_UF == "PE",
NR_TURNO == 1
)
# Dimensões da base selecionada
dim(dados)
## [1] 467244 45
O TSE utiliza códigos específicos para representar informações ausentes ou não registradas:
#NULO e -1: informações em branco ou
ausentes no banco de dados;#NE e -3: informações que não eram
registradas pelos sistemas eleitorais naquele ano.Durante a importação, os valores textuais #NULO e
#NE foram reconhecidos como ausentes. Agora, os códigos
numéricos correspondentes serão tratados nas variáveis numéricas.
Para preservar a base original e facilitar as análises posteriores, os códigos serão convertidos em valores ausentes apenas no conjunto de dados de trabalho.
dados <- dados |>
mutate(
across(
where(is.numeric),
~ replace(.x, .x %in% c(-1, -3), NA_real_)
)
)
Essa transformação permite trabalhar com os valores disponíveis sem
interpretar os códigos especiais como quantidades ou categorias válidas.
A distinção original entre as situações permanece preservada em
dados_originais.
Antes de iniciar as análises, é necessário verificar a presença de valores ausentes ou negativos nas variáveis que representam as quantidades de eleitores aptos, comparecimentos e abstenções.
dados |>
summarise(
total_registros = n(),
aptos_ausentes = sum(is.na(QT_APTOS)),
comparecimentos_ausentes = sum(is.na(QT_COMPARECIMENTO)),
abstencoes_ausentes = sum(is.na(QT_ABSTENCAO)),
aptos_negativos = sum(QT_APTOS < 0, na.rm = TRUE),
comparecimentos_negativos = sum(
QT_COMPARECIMENTO < 0, na.rm = TRUE
),
abstencoes_negativas = sum(
QT_ABSTENCAO < 0, na.rm = TRUE
)
)
Para verificar a integridade das informações, será realizada uma comparação entre a quantidade de eleitores aptos e a soma dos comparecimentos e abstenções.
Considerando que essas duas categorias representam situações complementares do eleitorado apto, espera-se que a seguinte igualdade seja satisfeita:
\[ QT\_APTOS = QT\_COMPARECIMENTO + QT\_ABSTENCAO \]
A partir dessa relação, os registros serão classificados como consistentes ou inconsistentes.
dados_validacao <- dados |>
mutate(
diferenca = QT_APTOS -
(QT_COMPARECIMENTO + QT_ABSTENCAO)
)
dados_validacao |>
summarise(
total_registros = n(),
registros_validos = sum(
!is.na(QT_APTOS) &
!is.na(QT_COMPARECIMENTO) &
!is.na(QT_ABSTENCAO)
),
registros_consistentes = sum(
diferenca == 0, na.rm = TRUE
),
registros_inconsistentes = sum(
diferenca != 0, na.rm = TRUE
),
percentual_consistente = mean(
diferenca == 0, na.rm = TRUE
) * 100
)
A verificação realizada não identificou inconsistências entre as quantidades de eleitores aptos, comparecimentos e abstenções nos registros válidos analisados.
Após a verificação da consistência, serão criadas duas novas variáveis para facilitar as análises posteriores: a taxa de comparecimento e a taxa de abstenção.
Esses indicadores permitem comparar grupos de diferentes dimensões populacionais, evitando que a interpretação dos resultados dependa exclusivamente das quantidades absolutas.
As taxas serão calculadas pelas seguintes expressões:
\[ Taxa\ de\ Abstenção = \frac{QT\_ABSTENCAO}{QT\_APTOS} \times 100 \]
\[ Taxa\ de\ Comparecimento = \frac{QT\_COMPARECIMENTO}{QT\_APTOS} \times 100 \]
dados <- dados |>
mutate(
taxa_abstencao = if_else(
!is.na(QT_APTOS) & QT_APTOS > 0 &
!is.na(QT_ABSTENCAO),
QT_ABSTENCAO / QT_APTOS * 100,
NA_real_
),
taxa_comparecimento = if_else(
!is.na(QT_APTOS) & QT_APTOS > 0 &
!is.na(QT_COMPARECIMENTO),
QT_COMPARECIMENTO / QT_APTOS * 100,
NA_real_
)
)
Por fim, será realizada uma verificação das quantidades totais de eleitores aptos, comparecimentos e abstenções presentes na base selecionada.
dados |>
summarise(
total_aptos = sum(QT_APTOS, na.rm = TRUE),
total_comparecimentos = sum(
QT_COMPARECIMENTO, na.rm = TRUE
),
total_abstencoes = sum(
QT_ABSTENCAO, na.rm = TRUE
)
) |>
mutate(
diferenca = total_aptos -
(total_comparecimentos + total_abstencoes)
)
Essa verificação permite observar se os totais agregados também respeitam a relação de consistência estabelecida anteriormente. A interpretação dos totais pressupõe que os agrupamentos da base sejam mutuamente exclusivos, sem sobreposição entre registros.
dados |>
summarise(
registros_duplicados = sum(duplicated(dados))
)
linhas_duplicadas <- dados[duplicated(dados) | duplicated(dados, fromLast = TRUE), ]
dim(linhas_duplicadas)
## [1] 106 47
linhas_duplicadas |>
count(across(everything()), name = "ocorrencias") |>
filter(ocorrencias > 1) |>
count(ocorrencias, name = "quantidade_de_grupos")