IMPORTAR Y EXPLORAR DATOS

Cuando trabajamos en R es importante definir cual es nuestro espacio de trabajo (la carpeta en la que trabajaremos y se almacenaran nuestras BD, imagenes, etc.) getwd() muestra el directorio de trabajo actual, mientras que setwd()establece el directorio de trabajo.

Instalamos las librerias que usaremos en este laboratorio

Usaremos la base de datos del Siseve, la cual esta en excel. Los paquetes que permiten abrir archivos en excel son: openxlsx y readxl.

siseve24 <- read_excel("Siseve2024.xlsx") # debo colocar el nombre de la base de datos tal como se encuentra guardado. Si no he establecido mi directorio de trabajo, coloco la ruta completa.

Realizamos algunas exploraciones

names(siseve24) # brinda el nombre de las variables 
## [1] "FECHA_REPORTE"       "DRE"                 "UGEL"               
## [4] "NIVEL_EDUCATIVO"     "TIPO_REPORTE"        "TIPO_VIOLENCIA"     
## [7] "SUBTIPO_VIOLENCIA"   "TIPO_ESTADO_REPORTE"
head(siseve24) # brinda una idea de la estructura de la base (10 primeros casos)
## # A tibble: 6 x 8
##   FECHA_REPORTE       DRE      UGEL  NIVEL_EDUCATIVO TIPO_REPORTE TIPO_VIOLENCIA
##   <dttm>              <chr>    <chr> <chr>           <chr>        <chr>         
## 1 2024-07-31 00:00:00 DRE Cus~ UGEL~ Primaria        Personal IE~ Psicológica   
## 2 2024-07-31 00:00:00 DRE Cus~ UGEL~ Primaria        Personal IE~ Psicológica   
## 3 2024-07-31 00:00:00 DRE Tac~ UGEL~ Primaria        Personal IE~ Psicológica   
## 4 2024-07-31 00:00:00 DRE Lim~ UGEL~ Primaria        Personal IE~ Psicológica   
## 5 2024-07-31 00:00:00 DRE Lor~ UGEL~ Secundaria      Personal IE~ Psicológica   
## 6 2024-07-31 00:00:00 DRE Lim~ UGEL~ Secundaria      Entre Escol~ Física        
## # i 2 more variables: SUBTIPO_VIOLENCIA <chr>, TIPO_ESTADO_REPORTE <chr>
str(siseve24) # brinda una idea de la estructura de la base (tipos de variables, etc.)
## tibble [81,714 x 8] (S3: tbl_df/tbl/data.frame)
##  $ FECHA_REPORTE      : POSIXct[1:81714], format: "2024-07-31" "2024-07-31" ...
##  $ DRE                : chr [1:81714] "DRE Cusco" "DRE Cusco" "DRE Tacna" "DRE Lima Metropolitana" ...
##  $ UGEL               : chr [1:81714] "UGEL Urubamba" "UGEL Urubamba" "UGEL Tacna" "UGEL 03 Cercado" ...
##  $ NIVEL_EDUCATIVO    : chr [1:81714] "Primaria" "Primaria" "Primaria" "Primaria" ...
##  $ TIPO_REPORTE       : chr [1:81714] "Personal IE a Escolares" "Personal IE a Escolares" "Personal IE a Escolares" "Personal IE a Escolares" ...
##  $ TIPO_VIOLENCIA     : chr [1:81714] "Psicológica" "Psicológica" "Psicológica" "Psicológica" ...
##  $ SUBTIPO_VIOLENCIA  : chr [1:81714] "Verbal" "Verbal" "Trato humillante" "Verbal" ...
##  $ TIPO_ESTADO_REPORTE: chr [1:81714] "Pendiente de atención por la IE" "Pendiente de atención por la IE" "Pendiente de atención por la IE" "Atención en proceso" ...
summary(siseve24) #brinda un resumen de las variables de la base 
##  FECHA_REPORTE                     DRE                UGEL          
##  Min.   :2013-09-16 00:00:00   Length:81714       Length:81714      
##  1st Qu.:2018-08-24 00:00:00   Class :character   Class :character  
##  Median :2022-03-31 00:00:00   Mode  :character   Mode  :character  
##  Mean   :2020-11-05 21:35:29                                        
##  3rd Qu.:2023-08-01 00:00:00                                        
##  Max.   :2024-07-31 00:00:00                                        
##  NIVEL_EDUCATIVO    TIPO_REPORTE       TIPO_VIOLENCIA     SUBTIPO_VIOLENCIA 
##  Length:81714       Length:81714       Length:81714       Length:81714      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##  TIPO_ESTADO_REPORTE
##  Length:81714       
##  Class :character   
##  Mode  :character   
##                     
##                     
## 

MANEJAR DATASETS

Algunas bases de datos pueden incluir miles de variables o casos que no necesariamente son de nuestro interes. Por tanto, realizaremos algunas ediciones.  Ojo: Es importante registrar siempre las ediciones y decisiones que realizamos para garantizar la replicabilidad

CAMBIAR NOMBRES A VARIABLES

Esta base de datos cuenta con variables que son autoexplicativas, pero no siempre es asi. Por preferencia personal, prefiero trabajar siempre con minusculas y sin muchos “-”.

names(siseve24) <- c("fecha", "dre", "ugel", "nivel_educativo", "tipo_reporte", "tipo_violencia", "subtipo_violencia", "estado_reporte")
names(siseve24) 
## [1] "fecha"             "dre"               "ugel"             
## [4] "nivel_educativo"   "tipo_reporte"      "tipo_violencia"   
## [7] "subtipo_violencia" "estado_reporte"

Tambien puedo cambiar solo el nombre de una variable. Por ejemplo, quiero cambiar el nombre de “dre” a “region”.

siseve24 <- rename(siseve24, region = dre)
names(siseve24) 
## [1] "fecha"             "region"            "ugel"             
## [4] "nivel_educativo"   "tipo_reporte"      "tipo_violencia"   
## [7] "subtipo_violencia" "estado_reporte"

SELECCIONAR CASOS

Esta base de datos incluye casos desde el 2013 hasta el 2024, pero solo me interesan aquellos casos del 2023. Para esto, filtramos los casos que corresponden al 2023.  Ojo: No siempre el numero de casos coincide con el numero de filas

siseve23 <- siseve24 %>% 
  filter(year(fecha) == 2023) #estoy creando una nueva base
nrow(siseve24) #en este caso cada fila corresponde a un caso 
## [1] 81714
nrow(siseve23) #en este caso cada fila corresponde a un caso 
## [1] 19788

SELECCIONAR ALGUNAS VARIABLES

Ahora que todos los casos pertenecen son del 2023, la variable fecha deja de ser relevante para mi analisis. Para eliminar la variable:

siseve23.1 <- siseve23 %>%
  select(-fecha)
names(siseve23.1) 
## [1] "region"            "ugel"              "nivel_educativo"  
## [4] "tipo_reporte"      "tipo_violencia"    "subtipo_violencia"
## [7] "estado_reporte"

Solo me interesa trabajar con las variables region, nivel_educativo, tipo_violencia

siseve23.2 <- siseve23.1 %>%
  select(region, nivel_educativo, tipo_violencia)
names(siseve23.2)  
## [1] "region"          "nivel_educativo" "tipo_violencia"

Este procedimiento hace mas sentido en bases de mas variables

ELABORAR TABLAS

Para mayor facilidad, renombrare mi base final (siseve23.2) como siseve.

TABLAS

tab_reg1 <- table(siseve$region)
tab_reg1
## 
##           DRE Amazonas             DRE Ancash           DRE Apurímac 
##                    201                    851                    120 
##           DRE Arequipa           DRE Ayacucho          DRE Cajamarca 
##                   1115                    249                    612 
##             DRE Callao              DRE Cusco       DRE Huancavelica 
##                    774                    852                    160 
##            DRE Huánuco                DRE Ica              DRE Junín 
##                    339                    668                    754 
##        DRE La libertad         DRE Lambayeque DRE Lima Metropolitana 
##                    851                    656                   7452 
##    DRE Lima Provincias             DRE Loreto      DRE Madre de Dios 
##                    682                    199                     61 
##           DRE Moquegua              DRE Pasco              DRE Piura 
##                    128                    131                   1088 
##               DRE Puno         DRE San Martín              DRE Tacna 
##                    131                    573                    582 
##             DRE Tumbes            DRE Ucayali 
##                    188                    371
tab_reg2 <- siseve %>% 
  count(region)
tab_reg2 
## # A tibble: 26 x 2
##    region               n
##    <chr>            <int>
##  1 DRE Amazonas       201
##  2 DRE Ancash         851
##  3 DRE Apurímac       120
##  4 DRE Arequipa      1115
##  5 DRE Ayacucho       249
##  6 DRE Cajamarca      612
##  7 DRE Callao         774
##  8 DRE Cusco          852
##  9 DRE Huancavelica   160
## 10 DRE Huánuco        339
## # i 16 more rows

INCLUIR TOTALES

tab_nev <- addmargins(table(siseve$nivel_educativo, siseve$tipo_violencia))
tab_nev
##                                            
##                                             Física Psicológica Sexual   Sum
##   Básica Alternativa - Avanzado                  4          19      7    30
##   Básica Alternativa - Inicial e Intermedio      1           3      0     4
##   Básica Especial - Inicial                      3           5      0     8
##   Básica Especial - Primaria                    14          13      6    33
##   Inicial - Cuna-Jardín                         81          50      9   140
##   Inicial - Jardín                             526         408     91  1025
##   Primaria                                    2842        2869    915  6626
##   Secundaria                                  4404        5025   2493 11922
##   Sum                                         7875        8392   3521 19788

PROPORCIONES

prop.table(table(siseve$tipo_violencia))
## 
##      Física Psicológica      Sexual 
##   0.3979685   0.4240954   0.1779361

PORCENTAJES

tabla_per <- siseve %>%
  count(tipo_violencia) %>%
  mutate(porcentaje = round(n / sum(n) * 100, 2))
tabla_per
## # A tibble: 3 x 3
##   tipo_violencia     n porcentaje
##   <chr>          <int>      <dbl>
## 1 Física          7875       39.8
## 2 Psicológica     8392       42.4
## 3 Sexual          3521       17.8

EJERCICIOS

Ejercicio 1: Crea una base de datos que solo incluya informacion del nivel secundaria del año 2023.
Ejercicio 2: Cuanto es el porcentaje de casos de violencia fisica en el nivel secundaria para dicho año.