Practica 8: Analizar datos agrupando y usando funciones de libreria dplyr

OBJETIVO: Analizar datos de salarios usando funciones de agrupación de datos usando libreria dplyr

Las 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
library(stats)#para manter la misma en cuando la genere

Los Datos

# Cargar datos de salarios
# salarios <- read.csv("Va la ruta en donde estan los datos")
ruta <- "C:/Users/chaco/Documents/ITD/Ciencia de los Datos/Datos/Salaries.csv"

salarios <- read.csv(ruta)

str(salarios)
## 'data.frame':    148654 obs. of  13 variables:
##  $ 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 ...

Agregar una columna con paisOrigen al conjunto de datos salarios de empleados solo en el 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"
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"

Generar un conjunto de datos solo para el año 2014

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

n <- nrow(salarios2014)

paises <- sample(paises, n)

salarios2014 <- mutate(salarios2014, paisOrigen = paises)

head(salarios2014)
##       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)
##           Id  EmployeeName                   JobTitle BasePay OvertimePay
## 38118 148649   Leon Walker                  Custodian       0           0
## 38119 148650 Roy I Tillery                  Custodian       0           0
## 38120 148651           NaN                        NaN     NaN         NaN
## 38121 148652           NaN                        NaN     NaN         NaN
## 38122 148653           NaN                        NaN     NaN         NaN
## 38123 148654     Joe Lopez Counselor, Log Cabin Ranch       0           0
##       OtherPay Benefits TotalPay TotalPayBenefits Year Notes        Agency
## 38118     0.00        0     0.00             0.00 2014    NA San Francisco
## 38119     0.00        0     0.00             0.00 2014    NA San Francisco
## 38120      NaN      NaN     0.00             0.00 2014    NA San Francisco
## 38121      NaN      NaN     0.00             0.00 2014    NA San Francisco
## 38122      NaN      NaN     0.00             0.00 2014    NA San Francisco
## 38123  -618.13        0  -618.13          -618.13 2014    NA San Francisco
##       Status paisOrigen
## 38118     PT       CUBA
## 38119     PT     IRLADA
## 38120             CHINA
## 38121            CANADA
## 38122         FINLANDIA
## 38123     PT  FINLANDIA

Filtrandosolo mexicanos y determinanando media y desviación estandard

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

meanMx
## [1] 99910.91
desvstdMex
## [1] 66113.36
str(mexicanos)
## 'data.frame':    1561 obs. of  14 variables:
##  $ 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" ...

Análisis de datos haciendo agrupaciones mediante summarize()

Le media y la sd de la variable TotalPubBenefits 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>

Ordenando 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

Visualizando resumen

pie(head(resumen$media))

# 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

Interpretacion del analisis:

Se determino la media y desviacion estandar de los Mexicanos en el año 2014 comparada con los demas paises dandonos como resultado una media de 99910.91 y una desviacion estandar de 66113.36

Asi mismo de la muestra tomada los 3 paises con mayores ingresos son: China, Noruega y Singapur, y se determino que los paises con peor ingreso esta conformado por: Chile, Estados Unidos y Japon.