2 Lectura de datos

educa <- read.csv(file = "_ndice_Sint_tico_de_Calidad_Educativa_-_ISCE_-_Municipio_de_Medell_n_2016.csv")

2.1 Estructura interna

str(educa)
## 'data.frame':    381 obs. of  9 variables:
##  $ DANE           : num  1.05e+11 1.05e+11 1.05e+11 1.05e+11 1.05e+11 ...
##  $ PRESTACION     : Factor w/ 3 levels "COBERTURA CONTRATADA",..: 3 3 3 3 1 3 3 3 3 3 ...
##  $ COMUNA         : int  2 2 16 4 1 3 4 10 8 15 ...
##  $ NOMBRE.COMUNA  : Factor w/ 21 levels " ALTAVISTA"," ARANJUEZ",..: 19 19 3 2 14 11 2 9 21 7 ...
##  $ NOMBRE         : Factor w/ 380 levels "C.E. AMIGUITOS CREATIVOS",..: 264 197 262 203 84 244 328 247 268 256 ...
##  $ ISCE.Primaria  : num  4.6 4 6.29 7.78 6.41 5.94 3.92 4.45 4.27 6.9 ...
##  $ ISCE.Secundaria: Factor w/ 235 levels "3.36","3.41",..: 121 78 173 161 16 50 104 153 47 29 ...
##  $ ISCE.Media     : Factor w/ 200 levels "2.96","3.46",..: 45 7 140 28 200 22 37 107 105 42 ...
##  $ ISCE.TOTAL     : num  4.93 4.23 6.84 6.59 NA 4.96 4.5 5.59 4.76 5.34 ...

2.2 Niveles de PRESTACIÓN

levels(educa$PRESTACION)
## [1] "COBERTURA CONTRATADA" "NO OFICIAL"           "OFICIAL"

3 Depurando datos

3.1 Editando nombres de variables

names(educa) <- c("Dane", "Prestacion", "Comuna", "NComuna",
                  "Colegio", "ISCE_P", "ISCE_S", "ISCE_M", "ISCE_T")
  • Consultando nuevos nombres de variables:
names(educa)
## [1] "Dane"       "Prestacion" "Comuna"     "NComuna"    "Colegio"   
## [6] "ISCE_P"     "ISCE_S"     "ISCE_M"     "ISCE_T"

3.2 Seleccionando variables con select()

# Cargando biblioteca dplyr
library(dplyr)

# Seleccionando todas menos el código del DANE
educa2 <- select(.data = educa, -Dane)

# Imprimiendo los primeros 10 datos
head(educa2, n = 10)

3.3 Cambiando orden de columnas con select()

prueba <- select(.data = educa2, Comuna, NComuna, Colegio,
                 everything())

3.4 Filtrando filas con filter()

educa3 <- filter(.data = educa2, ISCE_P > 0)

3.5 Eliminando filas con slice()

educa4 <- slice(.data = educa3, c(1, 372))
educa5 <- slice(.data = educa3, -c(100:nrow(educa3)))

3.6 Ordenando filas con arrange()

# Ascendente
educa6 <- arrange(.data = educa3, Comuna)

# Descendente
educa7 <- arrange(.data = educa3, desc(Comuna))

3.7 Editando variables con mutate()

educa8 <- mutate(.data = educa3,
                 Comuna = as.factor(Comuna),
                 ISCE_S = as.numeric(as.character(ISCE_S)),
                 ISCE_M = as.numeric(as.character(ISCE_M)))

# estructura interna de educa8
str(educa8)
## 'data.frame':    372 obs. of  8 variables:
##  $ Prestacion: Factor w/ 3 levels "COBERTURA CONTRATADA",..: 3 3 3 3 1 3 3 3 3 3 ...
##  $ Comuna    : Factor w/ 21 levels "1","2","3","4",..: 2 2 16 4 1 3 4 10 8 15 ...
##  $ NComuna   : Factor w/ 21 levels " ALTAVISTA"," ARANJUEZ",..: 19 19 3 2 14 11 2 9 21 7 ...
##  $ Colegio   : Factor w/ 380 levels "C.E. AMIGUITOS CREATIVOS",..: 264 197 262 203 84 244 328 247 268 256 ...
##  $ ISCE_P    : num  4.6 4 6.29 7.78 6.41 5.94 3.92 4.45 4.27 6.9 ...
##  $ ISCE_S    : num  5.67 4.76 7.17 6.45 3.74 4.21 5.39 6.24 4.17 3.91 ...
##  $ ISCE_M    : num  4.38 3.82 7.48 4.15 NA 4.07 4.27 7.01 6.91 4.34 ...
##  $ ISCE_T    : num  4.93 4.23 6.84 6.59 NA 4.96 4.5 5.59 4.76 5.34 ...

3.8 Operaciones múltiples con %>%

# Lectura nuevamente de datos
educacion <- read.csv(file = "_ndice_Sint_tico_de_Calidad_Educativa_-_ISCE_-_Municipio_de_Medell_n_2016.csv")

# Procesos concatenados
educa_final <- educacion %>% 
  rename(Dane = DANE, Prestacion = PRESTACION,
         Comuna = COMUNA, NComuna = NOMBRE.COMUNA,
         Colegio = NOMBRE, ISCE_P = ISCE.Primaria,
         ISCE_M = ISCE.Media, ISCE_T = ISCE.TOTAL,
         ISCE_S = ISCE.Secundaria) %>% 
  select(-Dane) %>% 
  filter(ISCE_P > 0) %>% 
  mutate(Comuna = as.factor(Comuna),
         ISCE_S = as.numeric(as.character(ISCE_S)),
         ISCE_M = as.numeric(as.character(ISCE_M))) %>% 
  filter(ISCE_M > 0 & ISCE_S > 0 & ISCE_T > 0)

# Estructura interna de educa_final
str(educa_final)
## 'data.frame':    304 obs. of  8 variables:
##  $ Prestacion: Factor w/ 3 levels "COBERTURA CONTRATADA",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ Comuna    : Factor w/ 21 levels "1","2","3","4",..: 2 2 16 4 3 4 10 8 15 9 ...
##  $ NComuna   : Factor w/ 21 levels " ALTAVISTA"," ARANJUEZ",..: 19 19 3 2 11 2 9 21 7 4 ...
##  $ Colegio   : Factor w/ 380 levels "C.E. AMIGUITOS CREATIVOS",..: 264 197 262 203 244 328 247 268 256 278 ...
##  $ ISCE_P    : num  4.6 4 6.29 7.78 5.94 3.92 4.45 4.27 6.9 4.5 ...
##  $ ISCE_S    : num  5.67 4.76 7.17 6.45 4.21 5.39 6.24 4.17 3.91 3.41 ...
##  $ ISCE_M    : num  4.38 3.82 7.48 4.15 4.07 4.27 7.01 6.91 4.34 7.35 ...
##  $ ISCE_T    : num  4.93 4.23 6.84 6.59 4.96 4.5 5.59 4.76 5.34 4.69 ...

4 Análisis gráfico

4.1 Distribución de ISCE Primaria

# cargando biblioteca ggplot2
library(ggplot2)

# Histograma
ggplot(data = educa_final, mapping = aes(x = ISCE_P)) +
  geom_histogram(color = "black", fill = "royalblue2") +
  labs(x = "Índice sintético de calidad educativa",
       y = "Frecuencia",
       title = "Distribución del Índice sintético de calidad educativa en primaria", subtitle = "Medellín 2016")

4.2 dplyr + ggplot2

4.2.1 Tabla

educa_final %>% 
  group_by(Prestacion) %>% 
  summarise(Promedio_ISCEP = mean(ISCE_P))

4.2.2 Gráfico

educa_final %>% 
  group_by(Prestacion) %>% 
  summarise(Promedio_ISCEP = mean(ISCE_P)) %>% 
  ggplot(data = .,
         mapping = aes(x = Prestacion, y = Promedio_ISCEP)) +
  geom_col(color = "black", fill = "red") +
  labs(x = "Prestación", y = "ISCE",
       title = "Promedio de ISCE en primaria por prestación")