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
##
##
##
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
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"
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
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
Para mayor facilidad, renombrare mi base final
(siseve23.2)
como siseve
.
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
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
prop.table(table(siseve$tipo_violencia))
##
## Física Psicológica Sexual
## 0.3979685 0.4240954 0.1779361
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
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.