El objetivo de este documento es mostrar, mediante ejemplos, el funcionamiento de la librería dplyr de R que forma parte de la familia de librerías tidyverse. La librería dplyr podría definirse como la sintaxis para la manipulación de datos.
Se trabajará con el archivo de datos county que se encuentra en la librería usdata. Este archivo contiene diversas métricas para cada uno de los 3142 condados de los Estados Unidos.
library(tidyverse)
library(usdata)
library(assertive)
library(stringr)
library(lubridate)
library(visdat)
county con el nombre counties.counties <- county
dim(counties)
[1] 3142 15
names(counties)
[1] "name" "state" "pop2000"
[4] "pop2010" "pop2017" "pop_change"
[7] "poverty" "homeownership" "multi_unit"
[10] "unemployment_rate" "metro" "median_edu"
[13] "per_capita_income" "median_hh_income" "smoking_ban"
La variable principal con la que trabajaremos es la población en el año 2017 pop2017.
help("county")
glimpse(counties)
Rows: 3,142
Columns: 15
$ name <chr> "Autauga County", "Baldwin County", "Barbour Coun...
$ state <fct> Alabama, Alabama, Alabama, Alabama, Alabama, Alab...
$ pop2000 <dbl> 43671, 140415, 29038, 20826, 51024, 11714, 21399,...
$ pop2010 <dbl> 54571, 182265, 27457, 22915, 57322, 10914, 20947,...
$ pop2017 <int> 55504, 212628, 25270, 22668, 58013, 10309, 19825,...
$ pop_change <dbl> 1.48, 9.19, -6.22, 0.73, 0.68, -2.28, -2.69, -1.5...
$ poverty <dbl> 13.7, 11.8, 27.2, 15.2, 15.6, 28.5, 24.4, 18.6, 1...
$ homeownership <dbl> 77.5, 76.7, 68.0, 82.9, 82.0, 76.9, 69.0, 70.7, 7...
$ multi_unit <dbl> 7.2, 22.6, 11.1, 6.6, 3.7, 9.9, 13.7, 14.3, 8.7, ...
$ unemployment_rate <dbl> 3.86, 3.99, 5.90, 4.39, 4.02, 4.93, 5.49, 4.93, 4...
$ metro <fct> yes, yes, no, yes, yes, no, no, yes, no, no, yes,...
$ median_edu <fct> some_college, some_college, hs_diploma, hs_diplom...
$ per_capita_income <dbl> 27841.70, 27779.85, 17891.73, 20572.05, 21367.39,...
$ median_hh_income <int> 55317, 52562, 33368, 43404, 47412, 29655, 36326, ...
$ smoking_ban <fct> none, none, partial, none, none, none, NA, NA, no...
summary(counties)
name state pop2000 pop2010
Length:3142 Texas : 254 Min. : 67 Min. : 82
Class :character Georgia : 159 1st Qu.: 11224 1st Qu.: 11114
Mode :character Virginia: 133 Median : 24621 Median : 25872
Kentucky: 120 Mean : 89650 Mean : 98262
Missouri: 115 3rd Qu.: 61775 3rd Qu.: 66780
Kansas : 105 Max. :9519338 Max. :9818605
(Other) :2256 NA's :3
pop2017 pop_change poverty homeownership
Min. : 88 Min. :-33.6300 Min. : 2.40 Min. : 0.00
1st Qu.: 10976 1st Qu.: -1.9700 1st Qu.:11.30 1st Qu.:69.50
Median : 25857 Median : -0.0600 Median :15.20 Median :74.60
Mean : 103763 Mean : 0.5339 Mean :15.97 Mean :73.27
3rd Qu.: 67756 3rd Qu.: 2.3750 3rd Qu.:19.40 3rd Qu.:78.40
Max. :10163507 Max. : 37.1900 Max. :52.00 Max. :91.30
NA's :3 NA's :3 NA's :2
multi_unit unemployment_rate metro median_edu
Min. : 0.00 Min. : 1.620 no :1974 below_hs : 2
1st Qu.: 6.10 1st Qu.: 3.520 yes :1165 hs_diploma :1397
Median : 9.70 Median : 4.360 NA's: 3 some_college:1695
Mean :12.32 Mean : 4.611 bachelors : 46
3rd Qu.:15.90 3rd Qu.: 5.355 NA's : 2
Max. :98.50 Max. :19.070
NA's :3
per_capita_income median_hh_income smoking_ban
Min. :10467 Min. : 19264 none :1927
1st Qu.:21772 1st Qu.: 41126 partial : 635
Median :25445 Median : 48073 complete: 0
Mean :26093 Mean : 49765 NA's : 580
3rd Qu.:29276 3rd Qu.: 55771
Max. :69533 Max. :129588
NA's :2 NA's :2
hist(counties$pop2017)
hist(counties$unemployment_rate)
ggplot(county, aes(x = median_edu, y = median_hh_income)) +
geom_boxplot()
dplyrLas funciones centrales en la librería dplyr:
count.counties %>%
count()
# A tibble: 1 x 1
n
<int>
1 3142
counties %>%
count(state, sort = TRUE)
# A tibble: 51 x 2
state n
<fct> <int>
1 Texas 254
2 Georgia 159
3 Virginia 133
4 Kentucky 120
5 Missouri 115
6 Kansas 105
7 Illinois 102
8 North Carolina 100
9 Iowa 99
10 Tennessee 95
# ... with 41 more rows
Observamos que en E.U.A. hay 51 estados; los tres con el mayor número de condados son Texas, Georgia y Virginia.
counties %>%
count(wt=pop2017)
# A tibble: 1 x 1
n
<int>
1 325713355
La población total del país en el año 2017 era de 325.7 millones de habitantes.
counties %>%
count(state, wt=pop2017, sort = TRUE)
# A tibble: 51 x 2
state n
<fct> <int>
1 California 39536653
2 Texas 28304596
3 Florida 20984400
4 New York 19849399
5 Pennsylvania 12805537
6 Illinois 12802023
7 Ohio 11658609
8 Georgia 10429379
9 North Carolina 10273419
10 Michigan 9962311
# ... with 41 more rows
Los estados más poblados en el año 2017 eran California, Texas y Florida.
Las funciones resumen son:
Población total en el país en el año 2017.
counties %>%
summarize(pob_total = sum(pop2017, na.rm = TRUE))
# A tibble: 1 x 1
pob_total
<int>
1 325713355
counties %>%
summarize(pob_total = sum(pop2017, na.rm = TRUE),
tasa_prom_desempleo = mean(unemployment_rate, na.rm = TRUE))
# A tibble: 1 x 2
pob_total tasa_prom_desempleo
<int> <dbl>
1 325713355 4.61
counties %>%
group_by(state) %>%
summarize(pob_total = sum(pop2017, na.rm = TRUE),
tasa_prom_desempleo = mean(unemployment_rate, na.rm=TRUE)) %>%
arrange(desc(tasa_prom_desempleo))
# A tibble: 51 x 3
state pob_total tasa_prom_desempleo
<fct> <int> <dbl>
1 Alaska 733972 8.95
2 Arizona 7016270 6.78
3 New Mexico 2088070 6.56
4 District of Columbia 693972 6.05
5 California 39536653 6.02
6 Michigan 9962311 5.99
7 Mississippi 2984100 5.99
8 Kentucky 4454189 5.95
9 West Virginia 1815857 5.91
10 Louisiana 4684333 5.88
# ... with 41 more rows
Alaska, Arizona y Nuevo México son los estados con las tasas promedio de desempleo más altas.