library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.2 --
## v ggplot2 3.3.6 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.9
## v tidyr 1.2.0 v stringr 1.4.1
## v readr 2.1.2 v forcats 0.5.2
## Warning: package 'tibble' was built under R version 4.0.5
## Warning: package 'tidyr' was built under R version 4.0.5
## Warning: package 'readr' was built under R version 4.0.5
## Warning: package 'purrr' was built under R version 4.0.5
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(dplyr)
Este taller lo deben entregar de manera individual. Lo pueden realizar en RStudio Cloud o en RStudio en su computador. En este último caso, deben enviarme la versión html del notebook vía correo electrónico. Todas las preguntas deben tener un bloque de código con el código usado para responder la pregunta y después de este bloque de código la respuesta a la pregunta que se haya formulado, a menos que en el contexto de la pregunta alguna de estas dos cosas no sea necesaria.
La pregunta 14 vale 1,0. Las demás preguntas valen 0,25 cada una. Si la respuesta es correcta (código + texto, cuando aplique), se le asignará el valor total. Si la respuesta se deja en blanco la respuesta valdrá 0. Se otorgará un valor entre 0 y el valor total de la pregunta a aquellas respuestas que no estén totalmente correctas pero que sugieran que la persona sí tiene alguna idea de cómo abordar la pregunta.
Importen los siguientes conjuntos de datos que encuentran en la carpeta datos de este proyecto:
setwd("C:/Users/jebet/OneDrive/Escritorio/UEXT/Semestre 7/Herramientas digitales/Environment")
info_proyectos <- read_csv("DNP-proyectos_datos_basicos.csv")
## Rows: 309708 Columns: 16
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (12): Bpin, NombreProyecto, ObjetivoGeneral, EstadoProyecto, Horizonte, ...
## dbl (4): ValorTotalProyecto, ValorVigenteProyecto, ValorObligacionProyecto,...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
seguimiento_proyectos <- read_csv("DNP-SeguimientoProyecto.csv")
## Rows: 309708 Columns: 8
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (5): Bpin, NombreProyecto, Horizonte, SectorProyecto, EntidadResponsable
## dbl (3): AvanceFisico, AvanceFinanciero, ValorVigente
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Las bases de datos seran los datos basicos de los proyectos del Departamento Nacional de planeación, la cual será nombrada info_proyectos, mientras que la base de datos correspondiente al seguimiento de los proyectos del Departamento Nacional de planeación será nombrada seguimiento_proyectos.
Explore cada una de las bases de datos usando alguna de las funciones usadas para exploración y responda las siguientes preguntas.
nrow(info_proyectos)
## [1] 309708
nrow(seguimiento_proyectos)
## [1] 309708
ncol(info_proyectos)
## [1] 16
ncol(seguimiento_proyectos)
## [1] 8
class(info_proyectos$ValorVigenteProyecto)
## [1] "numeric"
is.numeric(info_proyectos$ValorVigenteProyecto)
## [1] TRUE
class(info_proyectos$Horizonte)
## [1] "character"
is.character(info_proyectos$Horizonte)
## [1] TRUE
class(seguimiento_proyectos$Horizonte)
## [1] "character"
is.character(seguimiento_proyectos$Horizonte)
## [1] TRUEPrimeramente, la base de datos correspondiente a la informacion de los projectos manejados por el Departamento Nacional de planeación contiene 309.708 filas y 16 columnas, mientras que la base de datos correspondiente al seguimiento de los proyectos mencionados contiene 309.708 filas y 8 columnas. Consiguientemente, reconocí que tipo de variable es “Valor vigente proyecto”, y verifique que si fuera numérica; a su vez, reconocí y verifique el tipo de variable que es “Horizonte”, en ambas bases de datos, la variable es de caracteres.
proyectos_total <- inner_join (info_proyectos, seguimiento_proyectos)
## Joining, by = c("Bpin", "NombreProyecto", "Horizonte", "EntidadResponsable")
La llave para realizar una unión entre las dos bases de datos mencionadas, es el conjunto de variables compuesto por:
Bpin
NombreProyecto
Horizonte
EntidadResponsable
proyectos_total <- inner_join (info_proyectos, seguimiento_proyectos, by = c("Bpin", "NombreProyecto", "Horizonte", "EntidadResponsable"))
head(proyectos_total)
Se utilizo la llave (conjunto de variables) para unir las dos bases de datos.
Al unir las bases de datos, se resolvió este punto.
Al unir las bases de datos, se resolvió este punto.
Cree un conjunto de datos nuevo que se llame Valores y que contenga solamente las siguientes variables: Bpin, NombreProyecto, y todas las que comiencen con “Valor”.
Valores <- select(proyectos_total,Bpin,NombreProyecto,ValorTotalProyecto,ValorVigenteProyecto,ValorObligacionProyecto,ValorPagoProyecto,ValorVigente)
head(Valores, 10)
Se creo el conjunto de datos solicitado, y se muestran los primeros diez valores de este Data Frame.
En el conjunto del punto anterior, ordene las variables en el siguiente orden: NombreProyecto, Bpin, ValorTotalProyecto y luego todas las demás.
Valores = Valores %>% select(NombreProyecto, Bpin, ValorTotalProyecto, ValorVigenteProyecto, ValorObligacionProyecto, ValorPagoProyecto, ValorVigente)
head (Valores)
Se modifica el orden del Dataframe ‘Valores’ y se muestra el nombre de las variables, y su orden.
Ordene la base de datos en orden descendente por la variable Bpin. ¿Cuál es el nombre del primer proyecto que aparece en esta lista? ¿Cuál es el nombre del último proyecto que aparece en esta lista?
arrange(Valores, desc(Bpin))
arrange(proyectos_total, desc(Bpin))
Por defecto, la función arrange organiza las bases de datos de manera ascendente, por tanto se utilizo desc para organizar ambas bases de datos de manera descendente.
proyectos_total_Sectores <- proyectos_total %>%
group_by(Sector) %>% summarise(n_distinct(Sector))
head(proyectos_total_Sectores)
Hay 29 sectores en total, sin embargo los sectores unicos se denotan en la tabla superior.
Seleccione un sector que sea de su interés. Cree un nuevo conjunto de datos que contenga solamente los proyectos de ese sector, que tengan un Avance Financiero superior al 30 por ciento, y Horizonte “2021-2021”. ¿Cuántos proyectos hay en ese sector con esas características?
proyectos_total_rel_ext <- proyectos_total %>%
filter(
Sector == "Relaciones Exteriores",
AvanceFinanciero > 0.30,
Horizonte == "2021-2021")
head(proyectos_total_rel_ext)
Como se demuestra en la base de datos creada anteriormente, en el sector de relaciones exteriores hay solo 1 proyecto que cumplen las características.
Cree una tabla que tenga todos los sectores junto con el número de proyectos que existe para cada sector. Organice la tabla en orden descendente del número de proyectos por sector. ¿Cuáles son los tres sectores con más proyectos? ¿Cuáles son los tres sectores con menos proyectos?
table(proyectos_total$Sector)
##
## Agricultura Y Desarrollo Rural
## 17782
## Ambiente Y Desarrollo Sostenible
## 17162
## Ciencia, Tecnología E Innovación
## 3950
## Comercio, Industria Y Turismo
## 6158
## Congreso De La República
## 68
## Cultura
## 17156
## Deporte Y Recreación
## 19544
## Educación
## 27795
## Empleo Público
## 2713
## Fiscalía
## 233
## Gobierno Territorial
## 24386
## Hacienda
## 2323
## Inclusión Social Y Reconciliación
## 29521
## Información Estadística
## 1640
## Interior
## 4783
## Justicia Y Del Derecho
## 5716
## Minas Y Energía
## 7669
## Organismos De Control
## 826
## Planeación
## 9818
## Presidencia De La República
## 1616
## Rama Judicial
## 231
## Registraduría
## 278
## Relaciones Exteriores
## 144
## Salud Y Protección Social
## 26798
## Sistema Integral De Verdad, Justicia, Reparación Y No Repetición
## 58
## Tecnologías De La Información Y Las Comunicaciones
## 3823
## Trabajo
## 4289
## Transporte
## 40261
## Vivienda, Ciudad Y Territorio
## 32967
tabla_de_sectores <-proyectos_total %>% group_by(Sector) %>% summarise(n=n())%>% arrange(desc(n))
tabla_de_sectores
Primeramente, se utilizó la función table para tener un registro del numero de proyectos para poder contrastar los resultados. Consiguientemente, a partir de los datos de la tabla, podemos denotar que los tres sectores con más proyectos es Transporte con 40.261 proyectos; Vivienda, ciudad y territorio con 32.967 proyectos; Inclusión Social y Reconciliación con 29.521 proyectos. Por otro lado, los sectores con menos proyectos son Relaciones exteriores con 144 proyectos, el Congreso de la República con 68 proyectos, y el Sistema Integral De Verdad, Justicia, Reparación Y No Repetición con 58 proyectos.
¿Cuáles son las categorías de la variable TipoProyecto? ¿Qué indica cada una de estas categorías? ¿Cuál es la categoría con el mayor número de proyectos?
proyectos_total %>% group_by(TipoProyecto) %>% count()
Hay tres categorías en cuanto al tipo de proyecto:
Presupuesto general de la nación (PGN): Es el documento donde se programa y registra el gasto público y su forma de financiación, los gastos de inversion estan relacionados a los proyectos.
Sistema general de regalías (SRG): Proyectos de inversión con miras al desarollo social, economico y a la conversacion y restauracion del territorio.
De territorio (T): Adelantados por las entidades territoriales
A su vez, el proyecto con mayor número de proyectos es el de territorio, con 260.775 proyectos.
Cree las siguientes variables:
proyectos_total_variables <- proyectos_total %>% mutate(PDN_Duque = if_else(PlanDesarrolloNacional == "Pacto Por Colombia, Pacto por la Equidad (2019-2022)", 1, 0))
proyectos_total_variables <- proyectos_total_variables %>%
mutate(
nivel_avance_fisico = case_when(
AvanceFisico > 70 ~ "Alto",
AvanceFisico <= 30 ~ "Bajo",
AvanceFisico >= 30 ~ "Medio"),
nivel_avance_financiero = case_when(
AvanceFinanciero > 70 ~ "Alto",
AvanceFinanciero <= 30 ~ "Bajo",
AvanceFinanciero >= 30 ~ "Medio"
))
proyectos_total_variables <- proyectos_total_variables %>% mutate(valor_total_proyecto_Millones = ValorTotalProyecto/1000000, valor_por_ejecutar = ValorTotalProyecto - ValorVigente)
proyectos_total_variables
Para poder mostrar todas las variables solicitadas, se decidio crear una tabla de datos que incluyera las 5 variables.
Cree una tabla que contenga para cada sector el mínimo, el promedio, la mediana, el máximo, la desviación estándar de la variable ValorTotalProyecto y el número de proyectos de cada sector. Organice la tabla de mayor a menor promedio. Con base en la información de la tabla mencione tres conclusiones que pueda extraer sobre las diferencias entre los sectores.
tabla_de_medidas <- proyectos_total %>% group_by(Sector) %>%
mutate(minimo = min(ValorTotalProyecto), promedio = mean(ValorTotalProyecto), mediana = median(ValorTotalProyecto), maximo = max(ValorTotalProyecto), desviacion_estandar = sd(ValorTotalProyecto)) %>% arrange(desc(promedio) )
tabla_de_medidas
Cree una tabla que contenga para cada EstadoProyecto el promedio de la variable AvanceFinanciero y de la variable AvanceFisico. ¿Qué diferencias relevantes encuentra entre los promedios de los dos tipos de avance? ¿Los promedios encontrados parecen consistente con los distintos estados?
table(proyectos_total$EstadoProyecto)
##
## Aprobado Desaprobado En Ejecución Formulación No Aprobado No Viable
## 1908 1207 137381 145320 130 2284
## Terminado Viable
## 16424 5054
tabla_de_promedios <-proyectos_total %>% group_by(EstadoProyecto) %>% mutate(meanfin = mean(AvanceFinanciero), meanfis = mean(AvanceFisico))
tabla_de_promedios
Cabe resaltar que el promedio tanto de avance financiero como avance fisico para los estados aprobados, en formulación y viables, es bastante menor que el estado en ejecucción. A su vez, los promedios pueden ser consistentes entre su mismo estado pero no comparativamente.
Cree una tabla que contenga para cada Sector y TipoProyecto el promedio del ValorTotalProyecto. Ordene esta tabla en orden descendente del promedio calculado. ¿Cuál es la combinación de sector TipoProyecto para la que este promedio es el más alto? ¿Y el más bajo?
Tabla_combinada <- proyectos_total %>% group_by(Sector, TipoProyecto) %>% mutate( prom_total = mean(ValorTotalProyecto, na.rm = TRUE)) %>% arrange(desc(prom_total))
Tabla_combinada
El promedio más alto corresponde al proyecto del presupuesto general de la nación, especificamente, en el sector de inclusion social y reconciliacion. Mientras que la combinación mas baja corresponde al proyecto territorial del sector del Sistema Integral De Verdad, Justicia, Reparación Y No Repetición.