library(rmarkdown)
library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(readxl)

##Carregando a planilha de Base de Dados

planilha <- read_excel("202605_CPGF.xlsx")

Checar os dados da Planilha de base de Dados:

Observa-se se o tipo de dados está como carecter, número, etc… Para ajustar se necessário

glimpse(planilha)
## Rows: 13,053
## Columns: 15
## $ `CÓDIGO ÓRGÃO SUPERIOR`  <dbl> 63000, 63000, 63000, 63000, 63000, 63000, 630…
## $ `NOME ÓRGÃO SUPERIOR`    <chr> "Advocacia-Geral da União", "Advocacia-Geral …
## $ `CÓDIGO ÓRGÃO`           <dbl> 63000, 63000, 63000, 63000, 63000, 63000, 630…
## $ `NOME ÓRGÃO`             <chr> "Advocacia-Geral da União - Unidades com vínc…
## $ `CÓDIGO UNIDADE GESTORA` <dbl> 110161, 110161, 110161, 110161, 110161, 11016…
## $ `NOME UNIDADE GESTORA`   <chr> "SUPERINTENDENCIA REG. DE ADMIN. DA 1ª REGIAO…
## $ `ANO EXTRATO`            <dbl> 2026, 2026, 2026, 2026, 2026, 2026, 2026, 202…
## $ `MÊS EXTRATO`            <dbl> 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, …
## $ `CPF PORTADOR`           <chr> "***.725.752-**", "***.562.861-**", "***.562.…
## $ `NOME PORTADOR`          <chr> "VIVIANE CORREA LIMA", "ANTONIO CARLOS MELO D…
## $ `CNPJ OU CPF FAVORECIDO` <dbl> 2.179328e+12, 4.328381e+13, 9.295987e+12, 6.1…
## $ `NOME FAVORECIDO`        <chr> "FREITAS & CIA LTDA", "KALUNGA SA", "GOLFO IM…
## $ TRANSAÇÃO                <chr> "COMPRA A/V - R$ - APRES", "COMPRA A/V - R$ -…
## $ `DATA TRANSAÇÃO`         <dttm> 2026-04-06, 2026-04-01, 2026-04-06, 2026-04-…
## $ `VALOR TRANSAÇÃO`        <dbl> 49.08, 19.40, 161.94, 30.44, 93.42, 150.00, 1…
colnames(planilha)
##  [1] "CÓDIGO ÓRGÃO SUPERIOR"  "NOME ÓRGÃO SUPERIOR"    "CÓDIGO ÓRGÃO"          
##  [4] "NOME ÓRGÃO"             "CÓDIGO UNIDADE GESTORA" "NOME UNIDADE GESTORA"  
##  [7] "ANO EXTRATO"            "MÊS EXTRATO"            "CPF PORTADOR"          
## [10] "NOME PORTADOR"          "CNPJ OU CPF FAVORECIDO" "NOME FAVORECIDO"       
## [13] "TRANSAÇÃO"              "DATA TRANSAÇÃO"         "VALOR TRANSAÇÃO"

Alteração de tipo de dado:

1 - Mudando os nomes das colunas - retirando espaços e acentos

planilha <- planilha %>%
  select(codigo_orgao_superior = `CÓDIGO ÓRGÃO SUPERIOR`,nome_orgao_superior = `NOME ÓRGÃO SUPERIOR`,codigo_orgao = `CÓDIGO ÓRGÃO`,nome_orgao = `NOME ÓRGÃO`,codigo_unidade_gestora = `CÓDIGO UNIDADE GESTORA`,nome_unidade_gestora = `NOME UNIDADE GESTORA`,ano = `ANO EXTRATO`,mes = `MÊS EXTRATO`,cpf_portador = `CPF PORTADOR`,nome_portador = `NOME PORTADOR`,cnpj_ou_cpf_fornecedor = `CNPJ OU CPF FAVORECIDO`,nome_fornecedor = `NOME FAVORECIDO`,transacao = TRANSAÇÃO,data_transacao = `DATA TRANSAÇÃO`,valor_transacao = `VALOR TRANSAÇÃO` 
         )

Alterando tipo de dado de uma variável “coluna”

###Alterar o dado de todas as colunas para numérico

planilha <- planilha %>%
  mutate(codigo_orgao_superior = as.numeric(codigo_orgao_superior),codigo_orgao = as.numeric(codigo_orgao),codigo_unidade_gestora = as.numeric(codigo_unidade_gestora),ano = as.numeric(ano),mes = as.numeric(mes),cpf_portador = as.numeric(cpf_portador),cnpj_ou_cpf_fornecedor = as.numeric(cnpj_ou_cpf_fornecedor),valor_transacao = as.numeric(valor_transacao))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `cpf_portador = as.numeric(cpf_portador)`.
## Caused by warning:
## ! NAs introduced by coercion

Tratando as celulas que contenham NAs:

1 Identificando NA em toda base de dados

sum(is.na(planilha))
## [1] 16466

2 Identificando quantitativo de NA por variável (em cada coluna)

summary(planilha)
##  codigo_orgao_superior nome_orgao_superior  codigo_orgao       nome_orgao   
##  Min.   :20000         Length   :13053     Min.   :20101   Length   :13053  
##  1st Qu.:26000         N.unique :   28     1st Qu.:25205   N.unique :  168  
##  Median :30000         N.blank  :    0     Median :30108   N.blank  :    0  
##  Mean   :35131         Min.nchar:   19     Mean   :31166   Min.nchar:   15  
##  3rd Qu.:47000         Max.nchar:   44     3rd Qu.:30108   Max.nchar:   92  
##  Max.   :81000                             Max.   :81000                    
##                                                                             
##  codigo_unidade_gestora nome_unidade_gestora      ano            mes   
##  Min.   :110001         Length   :13053      Min.   :2026   Min.   :5  
##  1st Qu.:153056         N.unique :  772      1st Qu.:2026   1st Qu.:5  
##  Median :173057         N.blank  :    0      Median :2026   Median :5  
##  Mean   :220030         Min.nchar:   12      Mean   :2026   Mean   :5  
##  3rd Qu.:200382         Max.nchar:   45      3rd Qu.:2026   3rd Qu.:5  
##  Max.   :881330                              Max.   :2026   Max.   :5  
##                                                                        
##   cpf_portador     nome_portador   cnpj_ou_cpf_fornecedor  nome_fornecedor 
##  Min.   : NA     Length   :13053   Min.   :-1.100e+01     Length   :13053  
##  1st Qu.: NA     N.unique : 2163   1st Qu.:-1.100e+01     N.unique : 5011  
##  Median : NA     N.blank  :    0   Median : 3.816e+12     N.blank  :    0  
##  Mean   :NaN     Min.nchar:    8   Mean   : 1.538e+13     Min.nchar:    8  
##  3rd Qu.: NA     Max.nchar:   49   3rd Qu.: 2.488e+13     Max.nchar:  107  
##  Max.   : NA                       Max.   : 9.841e+13                      
##  NAs    :13053                                                             
##      transacao     data_transacao                valor_transacao  
##  Length   :13053   Min.   :2026-03-27 00:00:00   Min.   :    1.0  
##  N.unique :    5   1st Qu.:2026-04-06 00:00:00   1st Qu.:  154.3  
##  N.blank  :    0   Median :2026-04-13 00:00:00   Median :  494.2  
##  Min.nchar:   17   Mean   :2026-04-11 12:44:30   Mean   :  687.2  
##  Max.nchar:   33   3rd Qu.:2026-04-17 00:00:00   3rd Qu.: 1000.0  
##                    Max.   :2026-04-26 00:00:00   Max.   :56994.0  
##                    NAs    :3413

3 Retirando todos os NA da base, onde tem “NA” será contabilizado sem valor

planilha_sem_nas <- na.omit(planilha)

Estatística Básica

estatistica_gasto_cartao_corporativo <- data.frame(media_valor_transacao = mean(planilha$valor_transacao),
  mediana_valor_transacao = median(na.omit(planilha$valor_transacao)),DESV_padrao_valor_transacao = sd(na.omit(planilha$valor_transacao)),var_padrao_valor_transacao = var(na.omit(planilha$valor_transacao)),max_valor_transacao = max(na.omit(planilha$valor_transacao)),min_valor_transacao = min(na.omit(planilha$valor_transacao)))

_________________

Gráficos

Grafico de Colunas

Valor_orgao <- planilha %>%
  count(nome_orgao_superior, sort = TRUE)

ggplot(Valor_orgao, aes(x = reorder(nome_orgao_superior , n), y = n)) + geom_col() + coord_flip() +
  labs (
    title = "Valores por órgão",
    x = "Órgão Superior",
    y = "Valor Transacionado"
)

Histograma

ggplot(planilha, aes(x = codigo_orgao_superior )) + geom_histogram(bins = 30) + 
  labs(
    title = "Distribuição por Órgão Superior",
    x = "Órgão Superior",
    y = "Frequência"
  )

Boxplot

ggplot(planilha, aes(y = valor_transacao)) + geom_boxplot() +
  labs(
    title = "Boxplot Valores de Transações por Órgão",
    y = "Dispersão"
  )

Como se pode observar as despesas são simétricas, com exceção da despesa do GSI (GABINETE DE SEGURANCA INSTITUCIONAL/PR), que equivale a uma despesa de R$56.994,00

Gráfico de linha

1. Agrupar por dia do mês e SOMAR os valores das transações

despesa_data <- planilha %>%
  mutate(dia_do_mes = as.numeric(format(as.Date(`data_transacao`), "%d"))) %>%
  group_by(dia_do_mes) %>%
  summarise(valor_total = sum(`valor_transacao`, na.rm = TRUE))

2. Criar o gráfico de linha com os novos eixos

ggplot(despesa_data, aes(x = dia_do_mes, y = valor_total)) + 
  geom_line(color = "firebrick", size = 1) + 
  geom_point(color = "firebrick", size = 2) + # Pontos ajudam a ver os dias exatos
  scale_x_continuous(breaks = 1:31) +        # Garante que mostre os dias de 1 a 31 no eixo X
  labs(
    title = "Evolução do Valor Total de Transações por Dia do Mês",
    x = "Dia do Mês",
    y = "Valor Total Transacionado (R$)"
  ) +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_point()`).

Gráfico de pizza

classificacao <- planilha %>%
  count(valor_transacao)

ggplot(classificacao, aes(x = "", y = n, fill = valor_transacao)) + geom_col() + 
  coord_polar(theta = "y") +
  labs(
    title = "classificação de transação"
  )