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 ::mutate(fracc_fem = pobfem/pobtot,
dplyrfracc_mas = 1 - fracc_fem) %>%
::select(nom_ent, nom_mun, pobtot, pobfem, fracc_fem, fracc_mas) %>%
dplyr::filter(fracc_mas > fracc_fem) %>%
dplyr::arrange(desc(pobtot)) dplyr
## # 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 ::pull(nom_ent) %>%
dplyrunique()
## [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 ::mutate(nom_ent = replace(nom_ent, nom_ent == "Michoacán de Ocampo", "Michoacán"),
dplyrnom_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 ::pull(nom_ent) %>% unique() dplyr
## [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.
::write_tsv(poblacion, "data/poblacion.tsv") readr