library(readr)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.1
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6 ✔ dplyr 1.0.9
## ✔ tibble 3.1.7 ✔ stringr 1.4.0
## ✔ tidyr 1.2.0 ✔ forcats 0.5.1
## ✔ purrr 0.3.4
## Warning: package 'tibble' was built under R version 4.2.1
## Warning: package 'dplyr' was built under R version 4.2.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(numform)
## Warning: package 'numform' was built under R version 4.2.1
##
## Attaching package: 'numform'
## The following object is masked from 'package:forcats':
##
## as_factor
library(DT)
## Warning: package 'DT' was built under R version 4.2.1
contrataciones2021 <- read_delim("contrataciones2021.csv",
delim = ";", escape_double = FALSE, trim_ws = TRUE)
## Warning: One or more parsing issues, see `problems()` for details
## Rows: 132441 Columns: 17
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (15): Fecha notificación, Descripción, Número procedimiento, Institución...
## dbl (2): Monto, Monto estimado
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(contrataciones2021)
## # A tibble: 6 × 17
## `Fecha notificación` Descripción `Número proced…` Institución `Número contra…`
## <chr> <chr> <chr> <chr> <chr>
## 1 31/12/2021 19:33:59 20380 - AD… 2021CD-000396-0… Municipali… 0432021030400496
## 2 31/12/2021 19:33:59 20380 - AD… 2021CD-000396-0… Municipali… 0432021030400496
## 3 31/12/2021 19:33:59 20380 - AD… 2021CD-000396-0… Municipali… 0432021030400496
## 4 31/12/2021 19:32:36 20060 - 20… 2021CD-000392-0… Municipali… 0432021030400523
## 5 31/12/2021 19:32:36 20060 - 20… 2021CD-000392-0… Municipali… 0432021030400523
## 6 31/12/2021 19:32:36 20060 - 20… 2021CD-000392-0… Municipali… 0432021030400523
## # … with 12 more variables: Adjudicatario <chr>, `Cédula adjudicatario` <chr>,
## # Moneda <chr>, Monto <dbl>, Modificaciones <chr>, `Vigencia contrato` <chr>,
## # `Clasificación objeto` <chr>, `Tipo modalidad` <chr>,
## # `Tipo Procedimiento` <chr>, `Firma Contrato` <chr>,
## # `Moneda monto estimado` <chr>, `Monto estimado` <dbl>
En este caso se tomarán en cuenta únicamente los montos que vienen en colones, por lo que cualquier monto ingresado en dólares será eliminado de la tabla original
#Se utiliza la función `filter` para obtener los datos que están en colones
contrataciones2021_filtered <- contrataciones2021 %>%
filter( Moneda == 'CRC')
#Ahora se seleccionarán los 10 datos en el cual se tienen los 10 montos más altos
contrataciones2021_filtered <- contrataciones2021_filtered %>% arrange(desc(Monto))
inst_con_mayor_monto <-contrataciones2021_filtered[,c('Institución','Moneda', 'Monto')]
inst_con_mayor_monto$Monto <- f_mills(inst_con_mayor_monto$Monto, 1, prefix = '₡')
datatable(inst_con_mayor_monto[1:10,], options = list(scrollX = T))
De acuerdo con la tabla anterior, la cual cuenta con las 10 instituciones con mayor monto invertido siendo el Banco Nacional la institución con el mayor monto invertido de 35593.2 millones de colones.
En este caso se utilizará la tabla
contrataciones2021_filtered anteriormente para mostrar los
datos gráficamente.
#Los datos se tienen que agrupar según tipo de contratación y se realizará la suma de los datos según la agrupación
tipo_contratacion <- contrataciones2021_filtered %>%
group_by(`Tipo Procedimiento`) %>%
summarise(Total=sum(Monto))
#Para abreviar los montos, se utilizará la siguiente función para mejorar la lectura de los montos
tipo_contratacion$Total <- f_mills(tipo_contratacion$Total, 1, prefix = '₡')
ggplot(data= tipo_contratacion, aes(y=Total, x = `Tipo Procedimiento`))+
geom_col()+
theme(axis.text.x = element_text(angle = 25, hjust=1))
Según como se puede apreciar en el gráfico la contratación directa fue el tipo de procedimiento que a nivel presupuestario tuvo un mayor monto ejecutado con un total de ¢387065.5 millones, mientras que a su vez el procedimiento con menor monto corresponden a las licitaciones de tipo pública internacional con ¢4072.9 millones.
Es importante mencionar que existe una legislación específica que rige la contratación pública por lo que dependiendo del procedimiento y el monto de la compra así va a ser catalogada cada uno de estos.
Para esto se agruparán los datos de la tabla
contrataciones2021_filtered según el mes y se realizará la
suma para obtener el total por mes.
Primero se extraerá el mes en el que se firmó el contrato utilizando
expresiones regulares La función extract añade una nueva
columna con la expresión regular especificada. En este caso lo que se
quiere es extraer el mes en el que se firmó el contrato.
monto_mes<- contrataciones2021_filtered %>%
mutate(Mes = str_extract(`Firma Contrato`, "(?<=-)(.*?)(?=-)"))
#La siguiente línea se utiliza para asignar los niveles a cada mes, de forma que pueda desplegarse en orden cronológico en la figura
monto_mes$Mes = factor(monto_mes$Mes, levels = c("JAN","FEB","MAR","APR","MAY","JUN", "JUL", "AUG", "SEP","DEC"))
Ahora se agrupará según el mes y el total del monto obtenido en cada mes.
resumen_mes <- monto_mes %>%
group_by(Mes) %>%
summarise(Total=sum(Monto))
resumen_mes$Total <- f_mills(resumen_mes$Total, 1, prefix = '₡')
ggplot(data=resumen_mes, aes(x = Mes, y= Total))+
geom_col()
El monto total acumulado y por meses para este comportamiento se observa que el mayor monto fue invertido en el mes de septiembre mientras que febrero fue el que registró un menor monto. Esto además corresponde a que los cierres fiscales estaban gestionados para cortar durante el mes de octubre con lo que es entendible que septiembre que es el mes previo a este muestre un incremento importante en comparación con los meses anteriores.
adju_con_mayor_monto<-
contrataciones2021_filtered[,c('Adjudicatario','Moneda', 'Monto')]
adju_con_mayor_monto$Monto <- f_mills(adju_con_mayor_monto$Monto, 1, prefix = '₡')
datatable(adju_con_mayor_monto[1:10,], options = list(scrollX = T))
En la tabla se puede observar la lista con los 10 adjudicatarios que durante el 2021 le vendieron más al Estado, en primer lugar se puede observar a Promoción y mercadeo internacional G&E sociedad anónima con un monto de 35593.2 millones de colones, en el segundo lugar está el Sistema Nacional de radio y televisión sociedad anónimas con un monto de 18000.0 millones de colones. De ahí se sigue bajando viendo las otras empresas hasta llegar a Oriana Sujey Ortiz Vindas que cuenta con un monto de 3999.1 millones de colones que es la décima empresa que le vendió más al Estado en 2021.
En este caso se creará un columna con la diferencia entre valores que
sean únicamente en colones tanto para la columna Monto como
Monto estimado
datos_colones <- contrataciones2021_filtered %>%
filter( `Moneda monto estimado` == 'CRC') %>%
mutate(Diferencia = Monto - `Monto estimado`)
datos_colones <- datos_colones[with(datos_colones,order(Diferencia)),]
datos_colones$Diferencia <- f_mills(datos_colones$Diferencia, 1, prefix = '₡')
## Warning in digit_warn(x, "f_bills", 6): Detected one or more elements with a larger denomination.
## Consider using `f_bills` function instead.
datatable(datos_colones[1:20,c("Tipo Procedimiento","Institución", "Adjudicatario", "Diferencia")], options = list(scrollX = T))
El tipo de procedimiento con la mayor diferencia negativa entre el monto presupuestado y el monto ejecutado corresponde a la Licitación abreviada, en la Caja Costarricense de Seguros con el adjudicatario Simple market rbk sociedad de responsabilidad limitada, con una diferencia de -80395.1 millones de colones.