OBJETIVO: Analizar datos con salarios y agregar columnas
Utilizar la lirberia “dplyr”" para analizar datos de salarios
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) # Para tener la misma semilla cuando la generemos
Cargamos los datos de salarios los datos
# Cargar datos de salarios
#salarios <- read.csv("https://raw.githubusercontent.com/rpizarrog/Curso-Titulacion-Data-Science-/master/2019/Datos/Salaries.csv")
ruta <- "c:/Users/Hector/Documents/ciencia de los datos/datos/Salaries.csv"
salarios <- read.csv(ruta)
# salarios # Ya no los queremos ver
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 ...
summary(salarios)
## 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 seis registros
## Id EmployeeName JobTitle
## 1 1 NATHANIEL FORD GENERAL MANAGER-METROPOLITAN TRANSIT AUTHORITY
## 2 2 GARY JIMENEZ CAPTAIN III (POLICE DEPARTMENT)
## 3 3 ALBERT PARDINI CAPTAIN III (POLICE DEPARTMENT)
## 4 4 CHRISTOPHER CHONG WIRE ROPE CABLE MAINTENANCE MECHANIC
## 5 5 PATRICK GARDNER DEPUTY CHIEF OF DEPARTMENT,(FIRE DEPARTMENT)
## 6 6 DAVID SULLIVAN ASSISTANT DEPUTY CHIEF II
## BasePay OvertimePay OtherPay Benefits TotalPay TotalPayBenefits Year
## 1 167411.2 0.00 400184.2 NA 567595.4 567595.4 2011
## 2 155966.0 245131.88 137811.4 NA 538909.3 538909.3 2011
## 3 212739.1 106088.18 16452.6 NA 335279.9 335279.9 2011
## 4 77916.0 56120.71 198306.9 NA 332343.6 332343.6 2011
## 5 134401.6 9737.00 182234.6 NA 326373.2 326373.2 2011
## 6 118602.0 8601.00 189082.7 NA 316285.7 316285.7 2011
## Notes Agency Status
## 1 NA San Francisco
## 2 NA San Francisco
## 3 NA San Francisco
## 4 NA San Francisco
## 5 NA San Francisco
## 6 NA San Francisco
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
## 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
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
# Vamos a visualizar resumen
pie(head(resumen$media)) # Muy feo

# 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

De un total de 148654 registros analizamos el salario de los empleados despues de haber agregado el valor paises:
con ello pudimos determinar la media y la desviacion estandar
Pais media desviacion estandar
ARGENTINA 101437.08 67311.32
AUSTRALIA 102286.11 67673.70
BRASIL 98838.41 63843.66
CANADA 98884.96 67056.75
CHILE 98759.42 66322.89
CHINA 104757.59 68022.13
COLOMBIA 100889.33 68021.03
COREA DEL NORTE 98892.47 64195.68
CUBA 99644.20 67684.97
EGIPTO 100941.31 66593.22
ADEMAS LOS 3 PEORES (CHINA, NORUEGA Y SINGAPUR) Y MEJORES (CHILE, ESTADOS UNIDOS Y JAPON) PAISES EN SALARIOS