#Procedimiento
I. Tomemos otro dataset, como el que descargamos durante los ejercicios del capítulo anterior, e intentemos:
##Analisis de la base da Datos “potenciar trabajo listado titulares 2022
###Ejercicios previos
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
PRACTICA2 <- read.csv("C:/CIENCIA DE DATOS/Sergio R/CLASE 2/ptlt2022.csv")
Y pedimos su resumen:
summary(PRACTICA2)
## persona_id sexo genero edad
## Min. : 173 Length:1586676 Length:1586676 Min. :18.00
## 1st Qu.: 638884 Class :character Class :character 1st Qu.:25.00
## Median :1222500 Mode :character Mode :character Median :32.00
## Mean :1198111 Mean :34.62
## 3rd Qu.:1746353 3rd Qu.:42.00
## Max. :2143022 Max. :72.00
## NA's :62
## nacionalidad municipio_id municipio provincia_id
## Length:1586676 Min. : 90014 Length:1586676 Min. : 2.00
## Class :character 1st Qu.: 64200420 Class :character 1st Qu.: 6.00
## Mode :character Median : 67280728 Mode :character Median : 6.00
## Mean :269670236 Mean :26.75
## 3rd Qu.:500350005 3rd Qu.:50.00
## Max. :940140003 Max. :94.00
##
## provincia departamento_id departamento
## Length:1586676 Min. : 2001 Length:1586676
## Class :character 1st Qu.: 6420 Class :character
## Mode :character Median : 6728 Mode :character
## Mean :26987
## 3rd Qu.:50042
## Max. :94014
##
Pedimos su estructura
str(PRACTICA2)
## 'data.frame': 1586676 obs. of 11 variables:
## $ persona_id : int 173 355 364 368 386 396 425 458 461 472 ...
## $ sexo : chr "M" "M" "M" "M" ...
## $ genero : chr "" "" "" "Varón" ...
## $ edad : num 68 31 31 31 31 31 30 32 31 31 ...
## $ nacionalidad : chr "ARGENTINA " "ARGENTINA" "ARGENTINA" "ARGENTINA" ...
## $ municipio_id : int 62740274 64270427 62450245 64970497 20010001 64270427 660280049 67600760 65600560 66380638 ...
## $ municipio : chr "Florencio Varela" "La Matanza" "Ensenada" "Lujan" ...
## $ provincia_id : int 6 6 6 6 2 6 66 6 6 6 ...
## $ provincia : chr "Buenos Aires" "Buenos Aires" "Buenos Aires" "Buenos Aires" ...
## $ departamento_id: int 6274 6427 6245 6497 2001 6427 66028 6760 6560 6638 ...
## $ departamento : chr "Florencio Varela" "La Matanza" "Ensenada" "Luján" ...
Los nombres de las columnas
names(PRACTICA2)
## [1] "persona_id" "sexo" "genero" "edad"
## [5] "nacionalidad" "municipio_id" "municipio" "provincia_id"
## [9] "provincia" "departamento_id" "departamento"
glimpse(PRACTICA2)
## Rows: 1,586,676
## Columns: 11
## $ persona_id <int> 173, 355, 364, 368, 386, 396, 425, 458, 461, 472, 474,…
## $ sexo <chr> "M", "M", "M", "M", "M", "M", "M", "M", "M", "M", "M",…
## $ genero <chr> "", "", "", "Varón", "Varón", "Varón", "", "", "", "",…
## $ edad <dbl> 68, 31, 31, 31, 31, 31, 30, 32, 31, 31, 31, 31, 31, 32…
## $ nacionalidad <chr> "ARGENTINA ", "ARGENTINA", "ARGENTINA",…
## $ municipio_id <int> 62740274, 64270427, 62450245, 64970497, 20010001, 6427…
## $ municipio <chr> "Florencio Varela", "La Matanza", "Ensenada", "Lujan",…
## $ provincia_id <int> 6, 6, 6, 6, 2, 6, 66, 6, 6, 6, 6, 6, 6, 6, 6, 6, 22, 6…
## $ provincia <chr> "Buenos Aires", "Buenos Aires", "Buenos Aires", "Bueno…
## $ departamento_id <int> 6274, 6427, 6245, 6497, 2001, 6427, 66028, 6760, 6560,…
## $ departamento <chr> "Florencio Varela", "La Matanza", "Ensenada", "Luján",…
###Desarollo
####usar select() para seleccionar ciertas columnas y/o cambiar su orden
selecionaremos las que no tienen id, sexo por que es generico y nos ofrece un panorama mas amplio la columna de “generro”
seleccion <- select(PRACTICA2, -persona_id, -municipio_id,-provincia_id, -departamento_id, -sexo, -nacionalidad)
names(seleccion)
## [1] "genero" "edad" "municipio" "provincia" "departamento"
####usar filter() para filtrar las filas, descartando las que no cumplan cierta condición o condiciones a elección
vamos a filtrar excluyendo en: “nacionalidad” en blanco, “municipio” en blanco, “provincia” en blanco, “departamento” en blanco, “edad” de 18 a 35 años “genero” solo Mujeres
filtrados <- filter(seleccion, (edad < 25 & genero == "Mujer" & !(municipio == "" & provincia == "" & departamento == "")))
head(filtrados)
## genero edad municipio provincia departamento
## 1 Mujer 24 La Plata Buenos Aires La Plata
## 2 Mujer 24 Lomas De Zamora Buenos Aires Lomas de Zamora
## 3 Mujer 24 Lanus Buenos Aires Lanús
## 4 Mujer 24 La Plata Buenos Aires La Plata
## 5 Mujer 24 San Isidro Buenos Aires San Isidro
## 6 Mujer 24 Vicente Lopez Buenos Aires Vicente López
####usar arrange() para ordenar el dataframe según alguna de sus variables
ordenado <- arrange(filtrados, edad, municipio, provincia, departamento)
head(ordenado)
## genero edad municipio provincia departamento
## 1 Mujer 19 25 De Mayo Buenos Aires 25 de Mayo
## 2 Mujer 19 Aguilares Tucumán Río Chico
## 3 Mujer 19 Alderetes Tucumán Cruz Alta
## 4 Mujer 19 Almirante Brown Buenos Aires Almirante Brown
## 5 Mujer 19 Almirante Brown Buenos Aires Almirante Brown
## 6 Mujer 19 Almirante Brown Buenos Aires Almirante Brown
####usar en combinación group_by() y summarise() para generar un resumen del dataset, que contenga al menos 3 variables (se pueden usar medias, máximos, conteos, etc)
analisis de porcentaje por edad en los municipios, departamento, provincia
agrupado <- group_by(ordenado, edad, provincia, municipio)
sumario <- summarise(agrupado, total = n())
## `summarise()` has grouped output by 'edad', 'provincia'. You can override using
## the `.groups` argument.
head(sumario)
## # A tibble: 6 × 4
## # Groups: edad, provincia [1]
## edad provincia municipio total
## <dbl> <chr> <chr> <int>
## 1 19 Buenos Aires 25 De Mayo 1
## 2 19 Buenos Aires Almirante Brown 11
## 3 19 Buenos Aires Avellaneda 7
## 4 19 Buenos Aires Bahia Blanca 2
## 5 19 Buenos Aires Berazategui 2
## 6 19 Buenos Aires Berisso 3
ahora ordenaremos
ordenado2 <- arrange(sumario, desc(total))
head(ordenado2)
## # A tibble: 6 × 4
## # Groups: edad, provincia [5]
## edad provincia municipio total
## <dbl> <chr> <chr> <int>
## 1 24 Buenos Aires La Matanza 1070
## 2 23 Buenos Aires La Matanza 1011
## 3 22 Buenos Aires La Matanza 871
## 4 24 Ciudad de Buenos Aires Ciudad De Buenos Aires 800
## 5 24 Buenos Aires Florencio Varela 739
## 6 23 Ciudad de Buenos Aires Ciudad De Buenos Aires 729
####usar mutate() para crear una o más columnas nuevas
porc <- mutate(ordenado2, porc = total/sum(total))
head(porc)
## # A tibble: 6 × 5
## # Groups: edad, provincia [5]
## edad provincia municipio total porc
## <dbl> <chr> <chr> <int> <dbl>
## 1 24 Buenos Aires La Matanza 1070 0.112
## 2 23 Buenos Aires La Matanza 1011 0.114
## 3 22 Buenos Aires La Matanza 871 0.110
## 4 24 Ciudad de Buenos Aires Ciudad De Buenos Aires 800 1
## 5 24 Buenos Aires Florencio Varela 739 0.0772
## 6 23 Ciudad de Buenos Aires Ciudad De Buenos Aires 729 1
####Si antes hicimos todos los pasos por separado, ahora intentemos hacer todo el procedimiento en una sola cadena de instrucciones usando el operador pipe: %>%
Completo <- select(PRACTICA2, -persona_id, -municipio_id,-provincia_id, -departamento_id, -sexo, -nacionalidad, -departamento) %>%
filter(edad < 25 & genero == "Mujer" & !(municipio == "" & provincia == "")) %>%
group_by(edad, provincia, municipio) %>%
summarise(total = n()) %>%
arrange(desc(total)) %>%
mutate(porc = total/sum(total)) %>%
filter(total > 100)
## `summarise()` has grouped output by 'edad', 'provincia'. You can override using
## the `.groups` argument.
head(Completo)
## # A tibble: 6 × 5
## # Groups: edad, provincia [5]
## edad provincia municipio total porc
## <dbl> <chr> <chr> <int> <dbl>
## 1 24 Buenos Aires La Matanza 1070 0.112
## 2 23 Buenos Aires La Matanza 1011 0.114
## 3 22 Buenos Aires La Matanza 871 0.110
## 4 24 Ciudad de Buenos Aires Ciudad De Buenos Aires 800 1
## 5 24 Buenos Aires Florencio Varela 739 0.0772
## 6 23 Ciudad de Buenos Aires Ciudad De Buenos Aires 729 1
en el ejercicio encadenado se filtro al ultimo las cantidades totales mayores a 100, teniedo 168 filas
Analisamos que edades (entre las juventudes) y municipio, provincia son las que reciben este apoyo.