library(readxl)
library(openxlsx)
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.1.3
##
## Attaching package: 'xlsx'
## The following objects are masked from 'package:openxlsx':
##
## createWorkbook, loadWorkbook, read.xlsx, saveWorkbook, write.xlsx
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.6 v purrr 0.3.4
## v tibble 3.1.2 v dplyr 1.0.7
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(ggplot2)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(dplyr)
# Seta a pasta.
setwd('C:/Users/Usuario/Documents/prefeitura_ribeirao_preto_2022')
# O arquivo que contém os dados de interesse é um .xlsx com três abas.
list_dfs <- excel_sheets('CULTURA_versao_06_06_2022.xlsx') %>%
map(~read_xlsx('CULTURA_versao_06_06_2022.xlsx',.))
# Passa o elemento da lista para um novo DF.
cult_compl <- list_dfs[[1]]
# A seguir são identificados NAs. Todas são referentes a locais já esperados.
sum(is.na(cult_compl))
## [1] 5
# Visualizamos os valores inseridos na coluna "Fonte".
unique(cult_compl$Fonte)
## [1] "Municipal" "Federal"
# Visualiza estatísticas descritivas.
summary(cult_compl)
## Fonte
## Length:1157
## Class :character
## Mode :character
##
##
##
##
## Fonte do recurso com a especificação da Normativa Federal/Estadual (ex: Lei no; Portaria no;\r\nse for a LC 173/2020, especificar i nciso I ou II do artigo 5o) ou Fonte do Recurso Próprio - para COVID
## Length:1157
## Class :character
## Mode :character
##
##
##
##
## Data do recebimento da verba em Fundo Municipal, referente aos repasses de verbas Federal OU Estadual
## Min. :2020-07-15 00:00:00
## 1st Qu.:2020-10-01 00:00:00
## Median :2020-10-01 00:00:00
## Mean :2020-10-05 10:45:00
## 3rd Qu.:2020-10-01 00:00:00
## Max. :2021-01-03 00:00:00
## NA's :5
## Número empenho Data do empenho Data do pagamento
## Length:1157 Min. :2020-05-29 00:00:00 Min. :2020-06-18 00:00:00
## Class :character 1st Qu.:2020-12-15 00:00:00 1st Qu.:2020-12-22 00:00:00
## Mode :character Median :2020-12-30 00:00:00 Median :2021-01-25 00:00:00
## Mean :2021-02-28 23:56:15 Mean :2021-03-18 05:54:42
## 3rd Qu.:2020-12-31 00:00:00 3rd Qu.:2021-02-08 00:00:00
## Max. :2021-12-15 00:00:00 Max. :2021-12-22 00:00:00
##
## Valor pago Secretaria executora do pagamento
## Min. : 500 Length:1157
## 1st Qu.: 3500 Class :character
## Median : 3600 Mode :character
## Mean : 3958
## 3rd Qu.: 3600
## Max. :30000
##
## Finalidade (especificar serviço/ação para qual\r\na verba foi destinada ex.: Compra de cesta básica; acolhimento; aquisição de EPI; Atenção Básica; Tenda COVID; Polo COVID; Folha de Pagamento; entre outros)
## Length:1157
## Class :character
## Mode :character
##
##
##
##
## Folha Pagamento SIM 1/Não 0
## Min. :0
## 1st Qu.:0
## Median :0
## Mean :0
## 3rd Qu.:0
## Max. :0
##
## duvida (1) ou não (0) perante data expressa na coluna c
## Min. :0.00000
## 1st Qu.:0.00000
## Median :0.00000
## Mean :0.04322
## 3rd Qu.:0.00000
## Max. :1.00000
##
# Transforma para formato de data a coluna abordada abaixo.
cult_compl$`Data do pagamento` <- as.Date(cult_compl$`Data do pagamento`,
format = "%y/%m/%d")
# Transforma para formato de matrix a coluna abordada abaixo.
cult_compl$`Secretaria executora do pagamento` <- as.matrix(cult_compl$`Secretaria executora do pagamento`)
# Renomeia coluna.
colnames(cult_compl)[9] <- "Finalidade"
# Cria a imagem.
imagem <- ggplot(data = cult_compl, aes(x = `Data do pagamento`, y = `Valor pago`)) +
geom_point(aes(col= Finalidade,shape = Fonte), alpha = 0.75,
size = 2.5) +
ggtitle("Comportamento temporal dos valores pagos", subtitle = "Ao considerar Finalidade e Fonte") + xlab("Data") + ylab("Valor pago em reais") + theme_bw(base_size = 10)
# Plota a imagem.
plot(imagem)
# Cria uma categoria que engloba finalidades relacionadas com COVID.
cult_compl[,9] <- gsub("Aquisição.*", "Aquisição de insumos de higiene e EPI", cult_compl$Finalidade)
# Simplifica o nome de uma observação.
cult_compl[,9] <- gsub("Renda.*", "Renda Emerg. mens. aos trab. da cultura", cult_compl$Finalidade)
# Seleciona apenas dados a partir de 2021.
cult_compl_2021 <- cult_compl[cult_compl$`Data do pagamento` > as.Date("2021-01-01"),]
# Cria coluna que contém os meses de pagamento.
cult_compl_2021['Mes Pagamento'] <- format(cult_compl_2021$`Data do pagamento`, format="%Y-%m")
# Soma valor pago de acordo com finalidade, Mes Pagamento e fonte. Cria DF que contém esta informação.
valpag_agg <- aggregate(`Valor pago`~ Finalidade + `Mes Pagamento` + Fonte,
cult_compl_2021, sum)
# Da coluna que trata de data, mantém apenas informação de mês e passa para formato numérico.
valpag_agg[,2] <- str_sub(valpag_agg[,2], nchar(valpag_agg[,2]) - 1, nchar(valpag_agg[,2])) %>% as.numeric(.)
# Cria nova coluna que contém os valores pagos expressos por milhão de reais.
valpag_agg["val_pag_milhao_reais"] <- valpag_agg$`Valor pago`/1000000
# Cria plotagem com novo DF.
imagem_agg <- ggplot(data = valpag_agg, aes(x = `Mes Pagamento`, y = val_pag_milhao_reais)) +
geom_point(aes(col= Finalidade, shape = Fonte), alpha = 0.75,
size = 2.5) +
ggtitle("Comportamento temporal dos valores pagos") + xlab("Mês do ano de 2021") + ylab("Valor pago em milhões de reais") + theme_bw(base_size = 10) +
scale_x_continuous(breaks=seq(1, 12, 2))
# Plota a imagem. Obtemos uma plotagem muito mais clean.
plot(imagem_agg)
dados_covid_1 <- read.table(file = "HIST_PAINEL_COVIDBR_2021_Parte1_24mai2022.csv", header = TRUE, sep = ";", quote = "\"")
dados_covid_2 <- read.table(file = "HIST_PAINEL_COVIDBR_2021_Parte2_24mai2022.csv", header = TRUE, sep = ";", quote = "\"")
# Condensa dados de COVID de Ribeirão Preto em um mesmo DF.
covid_tot <- rbind(dados_covid_1, dados_covid_2)
# Seleciona apenas a cidade de Ribeirão Preto.
covid_rp <- subset(covid_tot, codmun == 354340)
# Mantém apenas colunas de interesse.
covid_rp <- covid_rp[,c(8,12)]
# Mantém apenas informação de mês na coluna que aborda data. Tranforma a mesma coluna para formato numérico.
covid_rp[,1] <- str_sub(covid_rp[,1], start = 6, end = 7) %>% as.numeric(.)
# Transforma a coluna de data de interesse em caractere.
cult_compl_2021_back <- cult_compl_2021
cult_compl_2021$`Data do pagamento` <- as.character(cult_compl_2021$`Data do pagamento`)
cult_compl_2021_back$`Data do pagamento` <- as.character(cult_compl_2021_back$`Data do pagamento`)
# A coluna de data passa a ter a mesma nonemclatura entre os dois DFs.
colnames(cult_compl_2021)[6] <- "data"
# A coluna de nossa data de interesse passa a manter apenas informação de meses.
for(i in 1:nrow(cult_compl_2021)){
cult_compl_2021[i,6] <- str_sub(cult_compl_2021_back[i,6], 6,7)
}
# Transforma para numeric a coluna data, contida em cult_compl_2021.
cult_compl_2021$data <- as.numeric(cult_compl_2021$data)
# Soma dados de valor pago caso apresentem mesma data, finalidade e fonte.
cult_agg <- aggregate(list(cult_compl_2021$`Valor pago`),
by = list(cult_compl_2021$data, cult_compl_2021$Fonte, cult_compl_2021$Finalidade), sum)
# Soma dados de casos novos por mês.
covid_agg <- aggregate(casosNovos ~ data, covid_rp, sum)
# Renomeia as colunas de para torná-las mais compreensíveis.
colnames(cult_agg) <- c("Mes", "Fonte", "Finalidade", "Valor Pago")
colnames(covid_agg) <- c("Mes", "Casos novos COVID-19")
# Captamos valores próximos aos limites das duas variáveis mencionadas.
# De acordo com recomendação e naturalmente, os limites selecionados são bastante próximos aos que os dados apresentam.
ylim_val_pag <- c(0, 1118430)
ylim_casos_covid <- c(0, 8369)
# Identifica a proporção de amplitude dos limites das duas variáveis.
prop_ampl <- diff(ylim_val_pag)/diff(ylim_casos_covid)
# Cria nova imagem.
image_cult_covid_agg <- ggplot() +
geom_point(data = cult_agg, aes(col = Finalidade,shape = Fonte, x = Mes, y = `Valor Pago`), alpha = 1, size = 2.25) +
geom_line(data = covid_agg, aes(x = Mes, y = `Casos novos COVID-19`*prop_ampl), color = "pink", size = 1.25, alpha = 1) +
scale_y_continuous("Valor Pago",sec.axis = sec_axis(~ (.)/prop_ampl, name = "Casos novos COVID-19")) +
scale_x_continuous(breaks=seq(1, 12, 2)) +
ggtitle("Comportamento temporal dos Valores Pagos e de casos de COVID-19",
subtitle = "Valores Pagos são demonstrados por triângulos ou círculos; Casos de COVID-19 são expressos por linha") + xlab("Mês do ano de 2021") +
ylab("Valor pago em reais") + theme_bw(base_size = 11) +
theme(plot.subtitle=element_text(size=8.5, hjust=0))
# Plota a imagem.
image_cult_covid_agg
# Exporta a imagem final.
ggsave(file="Comportamento temporal dos valores pagos e dos casos de covid.svg", plot=image_cult_covid_agg, width=14, height=11.2)