Introducción

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)

Conociendo los datos con los que trabajaremos

  • Renombramos el archivo de datos county con el nombre counties.
counties <- county
  • Observamos las dimensiones del archivo de datos.
dim(counties)
[1] 3142   15
  • Observamos los nombres de las 15 variables.
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.

  • Requerimos conocer la definición precisa de cada una de las variables.
help("county")
  • Observamos la estructura del archivo de datos.
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...
  • Generamos un resumen para cada una de las variables con las estadísticas descriptivas básicas. Observamos con cuidado los datos faltantes.
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                       
  • Elaboramos histogramos de dos variables de interés
hist(counties$pop2017)

hist(counties$unemployment_rate)

ggplot(county, aes(x = median_edu, y = median_hh_income)) +
  geom_boxplot()


La librería dplyr

Las funciones centrales en la librería dplyr:

  • select
  • filter
  • arrange
  • mutate
  • summarize
La función count.
  • Número total de condados en el país.
counties %>% 
  count()
# A tibble: 1 x 1
      n
  <int>
1  3142
  • Número de condados por estado.
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.

  • Población total en el país en el año 2017.
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.

  • Población total por estado en el año 2017.
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:

    • sum()
    • mean()
    • median()
    • min()
    • max()
    • n()
    • n_distinct()
    • first()
    • last()
    • nth()
  • 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
  • Población total y promedio de la tasa de desempleo a nivel nacional en el año 2017.
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
  • Población total y promedio de la tasa de desempleo por estado en el año 2017.
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.