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.

Taller

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.

  1. Importen los siguientes conjuntos de datos que encuentran en la carpeta datos de este proyecto:

    • DNP-SeguimientoProyecto.csv con el nombre info_proyectos. La información de este conjunto de datos la encuentran en esta página
    • DNP-SeguimientoProyecto.csv con el nombre seguimiento proyectos.La información de este conjunto de datos la encuentran en esta página
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.
1/

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.

  1. Explore cada una de las bases de datos usando alguna de las funciones usadas para exploración y responda las siguientes preguntas.

    • ¿Cuántas filas y cuántas columnas tiene cada una de las bases de datos?
    • ¿La variable ValorVigenteProyecto es numérica o de caracteres?
    • ¿La variable Horizonte es numérica o de caracteres?
    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] TRUE
2/

Primeramente, 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.

  1. Si quisiera unir estas dos bases de datos, ¿Cuál sería la llave que permitiría hacer esta unión?
proyectos_total <- inner_join (info_proyectos, seguimiento_proyectos)
## Joining, by = c("Bpin", "NombreProyecto", "Horizonte", "EntidadResponsable")
3/

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

  1. Una las dos bases de datos usando la llave identificada en el punto anterior.
proyectos_total <- inner_join (info_proyectos, seguimiento_proyectos,  by = c("Bpin", "NombreProyecto", "Horizonte", "EntidadResponsable"))

head(proyectos_total)
4/

Se utilizo la llave (conjunto de variables) para unir las dos bases de datos.

  1. Borre las variables que terminan en “.y”, si las hay.
5/

Al unir las bases de datos, se resolvió este punto.

  1. Cambie el nombre a las variables que terminan en “.x”, si las hay, para que esos nombres no tengan la expresión “.x”.
6/

Al unir las bases de datos, se resolvió este punto.

  1. 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)
7/

Se creo el conjunto de datos solicitado, y se muestran los primeros diez valores de este Data Frame.

  1. 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)
8/

Se modifica el orden del Dataframe ‘Valores’ y se muestra el nombre de las variables, y su orden.

  1. 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))
9/

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.

  1. ¿Cuántos sectores únicos se encuentran en la variable Sector? ¿Cuáles son esos sectores?
proyectos_total_Sectores <- proyectos_total %>% 
      group_by(Sector)  %>% summarise(n_distinct(Sector))

head(proyectos_total_Sectores)
10/

Hay 29 sectores en total, sin embargo los sectores unicos se denotan en la tabla superior.

  1. 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)
11/

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.

  1. 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
12/

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.

  1. ¿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()
13/

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.

  1. Cree las siguientes variables:

    • Una variable que se llame PDN_Duque que sea igual a 1 si la variable PlanDesarrolloNacional es igual a “Pacto Por Colombia, Pacto por la Equidad (2019-2022)” e igual a 0 en otro caso.
    • Una variable que se llame nivel_avance_físico y otra que se llame nivel_avance_financiero que contengan las siguientes categorías: Bajo si el nivel de avance físico o financiero, según corresponda, es menor o igual a 30, medio si el nivel de avance es mayor a 30 y menor o igual 70, y alto si el nivel de avances es mayor a 70.
    • Una variable que se llame valor_total_proyecto_Millones que contenga el valor total del proyecto en millones de pesos. Para esto, debe dividir la variable Valor_Total_Proyecto en un millón.
    • Una variable que se llama valor_por_ejecutar que corresponda a la diferencia entre el valor total del proyecto y el valor vigente.
    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
14/

Para poder mostrar todas las variables solicitadas, se decidio crear una tabla de datos que incluyera las 5 variables.

  1. 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
15/
  1. 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
16/

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.

  1. 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
17/

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.