4.4 Mutate

Con la función mutate() podemos generar nuevas variables a partir de las ya existentes. Por ejemplo, obtener la fracción de población de mujeres y hombres y con ella seleccionar los municipios con más hombres que mujeres y ordenar por población total.

poblacion %>%
  dplyr::mutate(fracc_fem = pobfem/pobtot, 
                fracc_mas = 1 - fracc_fem) %>%
  dplyr::select(nom_ent, nom_mun, pobtot, pobfem, fracc_fem, fracc_mas) %>%
  dplyr::filter(fracc_mas > fracc_fem) %>%
  dplyr::arrange(desc(pobtot))
## # A tibble: 448 × 6
##    nom_ent             nom_mun           pobtot pobfem fracc_fem fracc_mas
##    <chr>               <chr>              <dbl>  <dbl>     <dbl>     <dbl>
##  1 Baja California     Tijuana          1922523 953783     0.496     0.504
##  2 Chihuahua           Juárez           1512450 755473     0.500     0.500
##  3 Baja California     Mexicali         1049792 520544     0.496     0.504
##  4 Quintana Roo        Benito Juárez     911503 452178     0.496     0.504
##  5 Nuevo León          Apodaca           656464 324951     0.495     0.505
##  6 Nuevo León          General Escobedo  481213 239052     0.497     0.503
##  7 Nuevo León          Juárez            471523 233806     0.496     0.504
##  8 Nuevo León          García            397205 196497     0.495     0.505
##  9 Baja California Sur Los Cabos         351111 170167     0.485     0.515
## 10 Quintana Roo        Solidaridad       333800 163324     0.489     0.511
## # … with 438 more rows

O modificar los valores de una variable que ya existe. Por ejemplo, si obtenemos los valores de los nombres de los estados.

poblacion %>% 
  dplyr::pull(nom_ent) %>%
  unique()
##  [1] "Aguascalientes"      "Baja California"     "Baja California Sur"
##  [4] "Campeche"            "Coahuila"            "Colima"             
##  [7] "Chiapas"             "Chihuahua"           "Ciudad de México"   
## [10] "Durango"             "Guanajuato"          "Guerrero"           
## [13] "Hidalgo"             "Jalisco"             "México"             
## [16] "Michoacán"           "Morelos"             "Nayarit"            
## [19] "Nuevo León"          "Oaxaca"              "Puebla"             
## [22] "Querétaro"           "Quintana Roo"        "San Luis Potosí"    
## [25] "Sinaloa"             "Sonora"              "Tabasco"            
## [28] "Tamaulipas"          "Tlaxcala"            "Veracruz"           
## [31] "Yucatán"             "Zacatecas"

Podemos cambiar los de Coahuila, Michoacán o Veracruz, por sus nombres más cortos y comunes y sobre escribir el data frame para posteriores usos.

poblacion <- poblacion %>% 
  dplyr::mutate(nom_ent = replace(nom_ent, nom_ent == "Michoacán de Ocampo", "Michoacán"),
                nom_ent = replace(nom_ent, nom_ent == "Veracruz de Ignacio de la Llave", "Veracruz"),
                nom_ent = replace(nom_ent, nom_ent == "Coahuila de Zaragoza", "Coahuila"))

poblacion %>%
  dplyr::pull(nom_ent) %>% unique()
##  [1] "Aguascalientes"      "Baja California"     "Baja California Sur"
##  [4] "Campeche"            "Coahuila"            "Colima"             
##  [7] "Chiapas"             "Chihuahua"           "Ciudad de México"   
## [10] "Durango"             "Guanajuato"          "Guerrero"           
## [13] "Hidalgo"             "Jalisco"             "México"             
## [16] "Michoacán"           "Morelos"             "Nayarit"            
## [19] "Nuevo León"          "Oaxaca"              "Puebla"             
## [22] "Querétaro"           "Quintana Roo"        "San Luis Potosí"    
## [25] "Sinaloa"             "Sonora"              "Tabasco"            
## [28] "Tamaulipas"          "Tlaxcala"            "Veracruz"           
## [31] "Yucatán"             "Zacatecas"

Con las funciones write_tsv o write_csv podemos exportar lo tibbles resultantes a un archivo de texto plano separado por tabs o comas.

readr::write_tsv(poblacion, "data/poblacion.tsv")