Objetivo: Analizar datos agrupados usando funciones de libreria dplyr

Librerias

library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
require(stats)

Cargar datos

salarios <- read.csv("C:/Users/Matilda/Documents/Ciencia de los datos/Datos/Salaries.csv", encoding = "UTF-8")

#salarios
str(salarios)
## 'data.frame':    148654 obs. of  13 variables:
##  $ X.U.FEFF.Id     : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ EmployeeName    : Factor w/ 110810 levels "A Bernard  Fatooh",..: 77636 34712 1560 17232 81101 23164 3271 22709 73975 47938 ...
##  $ JobTitle        : Factor w/ 2159 levels "Account Clerk",..: 836 298 298 2149 594 135 246 609 246 370 ...
##  $ BasePay         : num  167411 155966 212739 77916 134402 ...
##  $ OvertimePay     : num  0 245132 106088 56121 9737 ...
##  $ OtherPay        : num  400184 137811 16453 198307 182235 ...
##  $ Benefits        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ TotalPay        : num  567595 538909 335280 332344 326373 ...
##  $ TotalPayBenefits: num  567595 538909 335280 332344 326373 ...
##  $ Year            : int  2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ...
##  $ Notes           : logi  NA NA NA NA NA NA ...
##  $ Agency          : Factor w/ 1 level "San Francisco": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Status          : Factor w/ 3 levels "","FT","PT": 1 1 1 1 1 1 1 1 1 1 ...
summary(salarios)
##   X.U.FEFF.Id           EmployeeName   
##  Min.   :     1   Kevin Lee   :    13  
##  1st Qu.: 37164   Richard Lee :    11  
##  Median : 74328   Steven Lee  :    11  
##  Mean   : 74328   William Wong:    11  
##  3rd Qu.:111491   John Chan   :     9  
##  Max.   :148654   KEVIN LEE   :     9  
##                   (Other)     :148590  
##                          JobTitle         BasePay      
##  Transit Operator            :  7036   Min.   :  -166  
##  Special Nurse               :  4389   1st Qu.: 33588  
##  Registered Nurse            :  3736   Median : 65007  
##  Public Svc Aide-Public Works:  2518   Mean   : 66325  
##  Police Officer 3            :  2421   3rd Qu.: 94691  
##  Custodian                   :  2418   Max.   :319275  
##  (Other)                     :126136   NA's   :609     
##   OvertimePay           OtherPay           Benefits       
##  Min.   :    -0.01   Min.   : -7058.6   Min.   :  -33.89  
##  1st Qu.:     0.00   1st Qu.:     0.0   1st Qu.:11535.40  
##  Median :     0.00   Median :   811.3   Median :28628.62  
##  Mean   :  5066.06   Mean   :  3648.8   Mean   :25007.89  
##  3rd Qu.:  4658.18   3rd Qu.:  4236.1   3rd Qu.:35566.86  
##  Max.   :245131.88   Max.   :400184.2   Max.   :96570.66  
##  NA's   :4           NA's   :4          NA's   :36163     
##     TotalPay        TotalPayBenefits        Year       Notes        
##  Min.   :  -618.1   Min.   :  -618.1   Min.   :2011   Mode:logical  
##  1st Qu.: 36169.0   1st Qu.: 44065.7   1st Qu.:2012   NA's:148654   
##  Median : 71426.6   Median : 92404.1   Median :2013                 
##  Mean   : 74768.3   Mean   : 93692.6   Mean   :2013                 
##  3rd Qu.:105839.1   3rd Qu.:132876.5   3rd Qu.:2014                 
##  Max.   :567595.4   Max.   :567595.4   Max.   :2014                 
##                                                                     
##            Agency       Status     
##  San Francisco:148654     :110535  
##                         FT: 22334  
##                         PT: 15785  
##                                    
##                                    
##                                    
## 
head(salarios)  # los primeros 6 salarios
##   X.U.FEFF.Id      EmployeeName
## 1           1    NATHANIEL FORD
## 2           2      GARY JIMENEZ
## 3           3    ALBERT PARDINI
## 4           4 CHRISTOPHER CHONG
## 5           5   PATRICK GARDNER
## 6           6    DAVID SULLIVAN
##                                         JobTitle  BasePay OvertimePay
## 1 GENERAL MANAGER-METROPOLITAN TRANSIT AUTHORITY 167411.2        0.00
## 2                CAPTAIN III (POLICE DEPARTMENT) 155966.0   245131.88
## 3                CAPTAIN III (POLICE DEPARTMENT) 212739.1   106088.18
## 4           WIRE ROPE CABLE MAINTENANCE MECHANIC  77916.0    56120.71
## 5   DEPUTY CHIEF OF DEPARTMENT,(FIRE DEPARTMENT) 134401.6     9737.00
## 6                      ASSISTANT DEPUTY CHIEF II 118602.0     8601.00
##   OtherPay Benefits TotalPay TotalPayBenefits Year Notes        Agency
## 1 400184.2       NA 567595.4         567595.4 2011    NA San Francisco
## 2 137811.4       NA 538909.3         538909.3 2011    NA San Francisco
## 3  16452.6       NA 335279.9         335279.9 2011    NA San Francisco
## 4 198306.9       NA 332343.6         332343.6 2011    NA San Francisco
## 5 182234.6       NA 326373.2         326373.2 2011    NA San Francisco
## 6 189082.7       NA 316285.7         316285.7 2011    NA San Francisco
##   Status
## 1       
## 2       
## 3       
## 4       
## 5       
## 6

Agregamos la columna paisOrigen a un conjunto de datos de salarios de empleados pero unicamente del año 2014

Las nacionalidades

set.seed(1000)

nacionalidades <- c("MEXICO", "ESTADOS UNIDOS", "INGLATERRA", "JAPON", "CHINA", "ARGENTINA", 
"BRASIL", "CANADA", "CHILE",
"HOLANDA", "FINLANDIA", "EGIPTO", "SUECIA", "AUSTRALIA",   "FRANCIA", "ITALIA", "ESPAÑA", "CUBA", "COLOMBIA",
"IRLADA", "NORUEGA", "COREA DEL NORTE", "SINGAPUR",
"INDIA")

nacionalidades
##  [1] "MEXICO"          "ESTADOS UNIDOS"  "INGLATERRA"     
##  [4] "JAPON"           "CHINA"           "ARGENTINA"      
##  [7] "BRASIL"          "CANADA"          "CHILE"          
## [10] "HOLANDA"         "FINLANDIA"       "EGIPTO"         
## [13] "SUECIA"          "AUSTRALIA"       "FRANCIA"        
## [16] "ITALIA"          "ESPAÑA"          "CUBA"           
## [19] "COLOMBIA"        "IRLADA"          "NORUEGA"        
## [22] "COREA DEL NORTE" "SINGAPUR"        "INDIA"
# Mediante mutate generar una nueva columna a salarios 
# llamada paisOrigen que sea un valor aleatorios de las
# nacionalidades

# Primero vamos a generar todas las nacionalidades

n <- nrow(salarios)  # Número de observaciones total de salrios

paises <- rep(nacionalidades, n*2) # Genera un vector muy grande 

head(paises) ; tail(paises)
## [1] "MEXICO"         "ESTADOS UNIDOS" "INGLATERRA"     "JAPON"         
## [5] "CHINA"          "ARGENTINA"
## [1] "COLOMBIA"        "IRLADA"          "NORUEGA"         "COREA DEL NORTE"
## [5] "SINGAPUR"        "INDIA"

Generamos un conjunto de datos solo del año 2014 de los empleados

salarios2014 <- filter(salarios, Year == 2014)

n <- nrow(salarios2014) # Número de observaciones de salaros2014
# Ahora mediante función mutate() agregamos la columna a salarios2014
paises <- sample(paises, n) # Ahora una muestra aletoria de todos los paises

salarios2014 <- mutate(salarios2014, paisOrigen = paises)

head(salarios2014)  # Los primeros seis
##   X.U.FEFF.Id         EmployeeName                 JobTitle  BasePay
## 1      110532          David Shinn           Deputy Chief 3 129150.0
## 2      110533           Amy P Hart        Asst Med Examiner 318835.5
## 3      110534 William J Coaker Jr. Chief Investment Officer 257340.0
## 4      110535       Gregory P Suhr          Chief of Police 307450.0
## 5      110536 Joanne M Hayes-White   Chief, Fire Department 302068.0
## 6      110537      Ellen G Moffatt        Asst Med Examiner 270222.0
##   OvertimePay  OtherPay Benefits TotalPay TotalPayBenefits Year Notes
## 1        0.00 342802.63 38780.04 471952.6         510732.7 2014    NA
## 2    10712.95  60563.54 89540.23 390112.0         479652.2 2014    NA
## 3        0.00  82313.70 96570.66 339653.7         436224.4 2014    NA
## 4        0.00  19266.72 91302.46 326716.8         418019.2 2014    NA
## 5        0.00  24165.44 91201.66 326233.4         417435.1 2014    NA
## 6     6009.22  67956.20 71580.48 344187.5         415767.9 2014    NA
##          Agency Status      paisOrigen
## 1 San Francisco     PT       ARGENTINA
## 2 San Francisco     FT          CANADA
## 3 San Francisco     PT      INGLATERRA
## 4 San Francisco     FT         HOLANDA
## 5 San Francisco     FT COREA DEL NORTE
## 6 San Francisco     FT       AUSTRALIA
tail(salarios2014)  # Los últimos seis
##       X.U.FEFF.Id  EmployeeName                   JobTitle BasePay
## 38118      148649   Leon Walker                  Custodian       0
## 38119      148650 Roy I Tillery                  Custodian       0
## 38120      148651           NaN                        NaN     NaN
## 38121      148652           NaN                        NaN     NaN
## 38122      148653           NaN                        NaN     NaN
## 38123      148654     Joe Lopez Counselor, Log Cabin Ranch       0
##       OvertimePay OtherPay Benefits TotalPay TotalPayBenefits Year Notes
## 38118           0     0.00        0     0.00             0.00 2014    NA
## 38119           0     0.00        0     0.00             0.00 2014    NA
## 38120         NaN      NaN      NaN     0.00             0.00 2014    NA
## 38121         NaN      NaN      NaN     0.00             0.00 2014    NA
## 38122         NaN      NaN      NaN     0.00             0.00 2014    NA
## 38123           0  -618.13        0  -618.13          -618.13 2014    NA
##              Agency Status paisOrigen
## 38118 San Francisco     PT       CUBA
## 38119 San Francisco     PT     IRLADA
## 38120 San Francisco             CHINA
## 38121 San Francisco            CANADA
## 38122 San Francisco         FINLANDIA
## 38123 San Francisco     PT  FINLANDIA

Filtrando solo mexicanos y determinando media y desviacion estandar

mexicanos<-filter(salarios2014, paisOrigen == "MEXICO")
meanMex<-mean(mexicanos$TotalPayBenefits)
desvstdMex<-sd(mexicanos$TotalPayBenefits)

meanMex
## [1] 99910.91
desvstdMex
## [1] 66113.36
str(mexicanos)
## 'data.frame':    1561 obs. of  14 variables:
##  $ X.U.FEFF.Id     : int  110561 110595 110597 110615 110618 110625 110627 110655 110674 110676 ...
##  $ EmployeeName    : Factor w/ 110810 levels "A Bernard  Fatooh",..: 9751 37179 29951 94920 44495 49147 3862 57015 50358 58458 ...
##  $ JobTitle        : Factor w/ 2159 levels "Account Clerk",..: 467 297 772 59 1415 432 1267 297 738 59 ...
##  $ BasePay         : num  267914 87324 246928 213558 100149 ...
##  $ OvertimePay     : num  0 0 0 3773 15716 ...
##  $ OtherPay        : num  0 199112 0 18589 152038 ...
##  $ Benefits        : num  79800 24960 63924 66845 33847 ...
##  $ TotalPay        : num  267914 286436 246928 235920 267903 ...
##  $ TotalPayBenefits: num  347714 311397 310852 302765 301750 ...
##  $ Year            : int  2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
##  $ Notes           : logi  NA NA NA NA NA NA ...
##  $ Agency          : Factor w/ 1 level "San Francisco": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Status          : Factor w/ 3 levels "","FT","PT": 2 3 2 3 3 2 2 2 2 3 ...
##  $ paisOrigen      : chr  "MEXICO" "MEXICO" "MEXICO" "MEXICO" ...

Analisis de datos utilizando la funcion summarize()

Le media y la sd de la variable TotalPayBenefits de los que son de México del año 2014 comparada contra todos los paises

# Agrupamos por pais de Origen
agrupados <- group_by(salarios2014, paisOrigen)
resumen <- summarise(agrupados, media = mean(TotalPayBenefits), desvstd = sd(TotalPayBenefits) )

resumen
## # A tibble: 24 x 3
##    paisOrigen        media desvstd
##    <chr>             <dbl>   <dbl>
##  1 ARGENTINA       101437.  67311.
##  2 AUSTRALIA       102286.  67674.
##  3 BRASIL           98838.  63844.
##  4 CANADA           98885.  67057.
##  5 CHILE            98759.  66323.
##  6 CHINA           104758.  68022.
##  7 COLOMBIA        100889.  68021.
##  8 COREA DEL NORTE  98892.  64196.
##  9 CUBA             99644.  67685.
## 10 EGIPTO          100941.  66593.
## # ... with 14 more rows
# Un resumen mas completo
resumen <- summarise(agrupados, media = mean(TotalPayBenefits), desvstd = sd(TotalPayBenefits), maximo = max(TotalPayBenefits), minimo = min(TotalPayBenefits), 
primerCuartil = quantile(TotalPayBenefits, 0.25),
segundoCuartil = quantile(TotalPayBenefits, 0.50),
tercerCuartil = quantile(TotalPayBenefits, 0.75),
                     registros = n() )

resumen
## # A tibble: 24 x 9
##    paisOrigen  media desvstd maximo minimo primerCuartil segundoCuartil
##    <chr>       <dbl>   <dbl>  <dbl>  <dbl>         <dbl>          <dbl>
##  1 ARGENTINA  1.01e5  67311. 5.11e5    0          47009.        101381.
##  2 AUSTRALIA  1.02e5  67674. 4.16e5    0          46735.        102797.
##  3 BRASIL     9.88e4  63844. 3.54e5   54.4        45142.        100519.
##  4 CANADA     9.89e4  67057. 4.80e5    0          37951.        100917.
##  5 CHILE      9.88e4  66323. 4.01e5    0          41588.         97533.
##  6 CHINA      1.05e5  68022. 3.29e5    0          48360.        103392.
##  7 COLOMBIA   1.01e5  68021. 3.65e5   40.5        42279.        101368.
##  8 COREA DEL~ 9.89e4  64196. 4.17e5   13.8        46266.         99774.
##  9 CUBA       9.96e4  67685. 3.74e5    0          40213.         99363.
## 10 EGIPTO     1.01e5  66593. 3.95e5    0          43734.        101549.
## # ... with 14 more rows, and 2 more variables: tercerCuartil <dbl>,
## #   registros <int>

Ordenar resumen

resumen <- arrange(resumen, desc(media))
class(resumen)   # de que tipo de datos estamos hablando
## [1] "tbl_df"     "tbl"        "data.frame"
resumen <- as.data.frame(resumen)

class(resumen) # De que tipo de dato queda ????
## [1] "data.frame"
resumen
##         paisOrigen     media  desvstd   maximo  minimo primerCuartil
## 1            CHINA 104757.59 68022.13 329147.3    0.00      48359.66
## 2          NORUEGA 103374.01 65204.12 303476.2    0.00      56507.21
## 3         SINGAPUR 102561.50 65653.61 355299.9    0.00      48760.29
## 4        AUSTRALIA 102286.11 67673.70 415767.9    0.00      46735.38
## 5       INGLATERRA 101916.13 65730.20 436224.4   22.56      49425.95
## 6        ARGENTINA 101437.08 67311.32 510732.7    0.00      47009.44
## 7           ITALIA 101280.12 64360.54 292573.1    0.00      52387.23
## 8           EGIPTO 100941.31 66593.22 395361.9    0.00      43734.49
## 9         COLOMBIA 100889.33 68021.03 364814.5   40.46      42279.16
## 10         HOLANDA 100709.89 65745.05 418019.2    0.00      48528.23
## 11         FRANCIA  99964.57 66598.23 342814.3   75.85      41566.33
## 12       FINLANDIA  99921.13 67341.68 374598.0 -618.13      41670.33
## 13          MEXICO  99910.91 66113.36 347713.9   23.72      44503.18
## 14          IRLADA  99802.97 65080.17 314018.2    0.00      46165.07
## 15            CUBA  99644.20 67684.97 374083.5    0.00      40212.87
## 16          ESPAÑA  99219.06 65067.76 321216.7   46.36      45607.40
## 17           INDIA  98929.65 65683.19 379918.7    0.00      45005.15
## 18 COREA DEL NORTE  98892.47 64195.68 417435.1   13.77      46266.37
## 19          CANADA  98884.96 67056.75 479652.2    0.00      37950.89
## 20          BRASIL  98838.41 63843.66 353797.1   54.39      45142.11
## 21          SUECIA  98766.07 66789.62 347713.9   25.57      37987.83
## 22           CHILE  98759.42 66322.89 401070.9    0.00      41588.08
## 23  ESTADOS UNIDOS  97505.85 66338.76 398984.5   18.39      36414.26
## 24           JAPON  97134.45 67000.10 297504.6    0.00      33305.20
##    segundoCuartil tercerCuartil registros
## 1       103392.28      152998.1      1561
## 2       103842.15      148389.0      1541
## 3       104669.07      144383.5      1590
## 4       102796.53      147011.8      1563
## 5       103446.04      147322.4      1573
## 6       101380.58      142663.4      1613
## 7       102321.42      141401.0      1496
## 8       101548.65      141134.4      1631
## 9       101367.54      143953.6      1604
## 10      101219.43      143386.8      1728
## 11      102354.60      141919.3      1529
## 12      101270.92      142831.0      1549
## 13      101034.81      139867.4      1561
## 14      100640.58      139592.6      1561
## 15       99363.47      142223.9      1541
## 16      100228.06      140906.0      1613
## 17      100323.83      140325.0      1649
## 18       99773.62      135564.9      1641
## 19      100917.44      140563.0      1629
## 20      100519.17      141853.7      1586
## 21       99352.40      141973.0      1632
## 22       97533.10      140824.1      1541
## 23       99051.49      139926.5      1615
## 24       96823.19      139692.7      1576

Visualizar resumen mediante grafica de pastel

# Vamos a visualizar resumen
pie(head(resumen$media)) # Muy feo

Los tres mejores y los tres peores

# Vamos a poner los tres mejores y los tres peores

mejores <- head(resumen, 3) # Los tres primeros
peores <- tail(resumen, 3)

mejores
##   paisOrigen    media  desvstd   maximo minimo primerCuartil
## 1      CHINA 104757.6 68022.13 329147.3      0      48359.66
## 2    NORUEGA 103374.0 65204.12 303476.2      0      56507.21
## 3   SINGAPUR 102561.5 65653.61 355299.9      0      48760.29
##   segundoCuartil tercerCuartil registros
## 1       103392.3      152998.1      1561
## 2       103842.1      148389.0      1541
## 3       104669.1      144383.5      1590
peores
##        paisOrigen    media  desvstd   maximo minimo primerCuartil
## 22          CHILE 98759.42 66322.89 401070.9   0.00      41588.08
## 23 ESTADOS UNIDOS 97505.85 66338.76 398984.5  18.39      36414.26
## 24          JAPON 97134.45 67000.10 297504.6   0.00      33305.20
##    segundoCuartil tercerCuartil registros
## 22       97533.10      140824.1      1541
## 23       99051.49      139926.5      1615
## 24       96823.19      139692.7      1576
barplot(mejores$media / 1000) # represent.. en miles

barplot(peores$media / 1000) # represent.. en miles

Analisis de los datos

print("Se analizaron los datos de los salarios de 24 paises, de los cuales nos enfocamos en los salarios de Mexico, donde podremos observar, la media, desviacion estandar, el salario minimo y maximo; asi como los se contemplan los seis mejores salarios y los seis peores. Tambien se muestran el resumen grafico de toda esta información.")
## [1] "Se analizaron los datos de los salarios de 24 paises, de los cuales nos enfocamos en los salarios de Mexico, donde podremos observar, la media, desviacion estandar, el salario minimo y maximo; asi como los se contemplan los seis mejores salarios y los seis peores. Tambien se muestran el resumen grafico de toda esta información."
paste("Se analizaron los datos de los salarios de 24 paises, de los cuales nos enfocamos en los salarios de Mexico, donde podremos observar, la media, desviacion estandar, el salario minimo y maximo; asi como los se contemplan los seis mejores salarios y los seis peores. Tambien se muestran el resumen grafico de toda esta información.")
## [1] "Se analizaron los datos de los salarios de 24 paises, de los cuales nos enfocamos en los salarios de Mexico, donde podremos observar, la media, desviacion estandar, el salario minimo y maximo; asi como los se contemplan los seis mejores salarios y los seis peores. Tambien se muestran el resumen grafico de toda esta información."