#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.