Bienvenidas y bienvenidos al curso Introducción a R para RRHH 👩💻. R es un lenguaje open source, es decir que es abierto, gratuito, y que además la comunidad de usuarias y usuarios contribuye a su mantenimiento.
Si quieren compartir imágenes del curso en redes sociales lo pueden hacer, tanto si les gustó como si no les gustó.
Los hashtags que pueden usar son
#R4HR
#RStats_ES
#data4hr
#BetterWithData
#PeopleAnalytics
… y el hashtag que quieran
También pueden arrobar a Data 4HR y unirse a los grupos
🕹️ Discord
Algunas cosas que tienen que saber:
R es un lenguaje de código abierto, que nació para el análisis estadístico de datos.
Su popularidad se debe gracias a la enorme comunidad global que permanentemente actualiza paquetes y genera contenido. Su principal base de usuarios no vienen del mundo de la programación sino personas de distintas disciplinas, lo que hace que su sintaxis sea más simple. Aparte de los desarrollos de machine learning que se hacen en todo el mundo, te podés encontrar con:
Aprender R para RRHH tiene inagotables ventajas:
Hacer análisis predictivos (Clase 3 de este curso!)
Reproducir el trabajo
Más capacidad de procesamiento que Excel
Automatizar el trabajo
Analizar todo tipo de datos
Enviar mails con reportes automáticos
Escribir libros, blogs, CV
La comunidad de R
R cuenta con una red de soporte muy amplia, sólida y solidaria, especialmente en Latinoamérica. Prácticamente en todos los países del continente hay RUG (R Users Group) para el público en general, y toda una red de R-Ladies que promueven la diversidad de mujeres y de minorías, para generar mejores oportunidades laborales.
Pueden explorar todos los RUG https://benubah.github.io/r-community-explorer/rladies.html
En esta misma línea, desde Mayo de 2020 empezamos a desarrollar una comunidad específica para el mundo de RRHH, donde nos reunimos el primer sábado de cada mes de 10:00 a 11:30 hs. (hora de Argentina) para aprender a programar en este lenguaje.
Revisamos paquetes, exploramos formas de hacer análisis predictivos, y el plan es poder desarrollar una red similar a los RUGs y R-Ladies.
Desde agosto 2021 somos una comunidad reconocida y sponsoreada por R Consortium una organización dedicada a promover y a contribuir con recursos para la adopción y el desarrollo de R.
Todo el contenido generado por los usuarios de R4HR se puede utilizar gratuitamente citando la fuente
Esta
obra está bajo una
Licencia
Creative Commons Atribución 4.0 Internacional.
Al principio programar es un acto de fe. Vemos que pasan cosas, que escribo algo y una cosa aparece en la pantalla pero no sabemos por qué, cómo, y por qué no me sale de nuevo.
En particular R, y sus paquetes, permiten expresar lo que quiero programar mayormente de una forma similar a la que lo haría si tuviera que dar las instrucciones verbalmente a alguien. Y a diferencia de otros lenguajes como html por ejemplo, la sintaxis del código (las instrucciones) es mucho más simple (entren a cualquier página web y aprieten F12).
También les va a pasar con este curso que muchas cosas les va a resultar más sencillas de hacer en Excel. O que tal vez buscando en internet encontraste otra forma de hacer las cosas, y está bien que así sea.
Lo único que van a necesitar para programar es:
Y con el tiempo, y la práctica, un día tenés una epifanía y todo lo que volcas en un código cobra sentido.
Trabajar con proyectos en RStudio hace que todo el trabajo sea más sencillo. Los proyectos crean una carpeta en nuestra PC en donde se almacenarán los archivos, tablas, scripts, y hace que todo sea más organizado.
Para crear un proyecto tenés podés entrar en:
Y luego poner el nombre de la carpeta.
Se abre una ventana, hacemos click en New Project, luego en Ok y finalmente en la tercera ventana podemos darle un nombre al proyecto, y asignar la carpeta en la que queremos guardarlo con el botón Browse.
Por definición, R es un lenguaje orientado a objetos. Esto significa que a una tabla, un valor, una variable, etc. le voy a poner un nombre, y esa cosa que ahora tiene nombre se llama objeto.
Esto nos simplifica un montón la vida. La asignación la hacemos con
el símbolo <- que simula una flecha hacia la izquierda.
También se puede hacer con el símbolo = pero como muchas
veces lo utilizamos para configurar un parámetro de una función usamos
“la flechita”.
# Esto es un comentario
objeto_1 <- 2021
objeto_2 <- 1979 # Poner año de nacimiento o ingreso al trabajo
# Para ver el resultado del objeto uso las teclas Ctrl + Enter
# También puedo usar el ícono "Run"
objeto_1## [1] 2021
# Podemos hacer operaciones con objetos
objeto_1 - objeto_2## [1] 42
Uno de los objetos más utilizados son los vectores
que son conjuntos de valores, numéricos, de texto, o combinados. Para
crear un vector necesitamos usar la función c() que
significa combine.
Los vectores pueden tener texto o número.
# Vector de Texto
nombre <- c("Gustavo", "Charly", "Zeta") # Las variables de texto van siempre con comillas.
# Ver el contenido
nombre## [1] "Gustavo" "Charly" "Zeta"
# Seleccionar un elemento del vector
nombre[1]## [1] "Gustavo"
# Vector numérico
anio_nacimiento <- c(1959, 1963, 1958)Los vectores son muy utilizados para filtrar elementos, cambiar nombres de tablas, etc..
Los data frames son tables que contienen filas (observaciones) y columnas (variables).
Podemos crear un data frame usando vectores que tengan la
misma cantidad de elementos usando la función
data.frame(). Dentro de la función podemos poner los
nombres
# Crear el data frame soda_stereo usando los vectores nombre y anio_nacimiento
soda.stereo <- data.frame(nombre, anio_nacimiento)
# Seleccionar elementos de un vector usando la sintaxis: nombre_dataframe[fila, columna]
soda.stereo[1,2]## [1] 1959
Normalmente los data frames los cargamos de algún archivo. Por
ejemplo, carguemos el archivo rotacion.csv usando la
función read.csv.
# Crear un objeto llamado rotacion leyendo el archivo rotacion.csv
rotacion <- read.csv("rotacion.csv",
sep = ";")
# Ver el contenido del data frame
rotacion## Periodo Movimientos Cantidades
## 1 2010 Ingresos 9
## 2 2010 Egresos 2
## 3 2011 Ingresos 84
## 4 2011 Egresos 14
## 5 2012 Ingresos 44
## 6 2012 Egresos 17
## 7 2013 Ingresos 44
## 8 2013 Egresos 15
## 9 2014 Ingresos 60
## 10 2014 Egresos 14
## 11 2015 Ingresos 36
## 12 2015 Egresos 27
## 13 2016 Ingresos 14
## 14 2016 Egresos 14
Si bien a los objetos podemos nombrarlos de cualquier manera, hay buenas prácticas recomendadas. Por ejemplo:
_) o el punto (.).# Nombres válidos de objetos
## Mejores opciones
respuestas_clima
respuestas.clima
# Esto funciona pero es menos recomendable
RespuestasClimaPor otro lado:
Los paquetes o librerías son extensiones desarrolladas por la comunidad o por empresas que facilitan el uso de R y expanden sus capacidades. En este encuentro vamos a usar los siguientes paquetes:
readxl: Desarrollado por Hadley Wickham and Jennifer
Bryan. Link a la
web.openxlsx: Desarrollado por Philipp Schauberger and
Alexander Walker. Link a la
web.tidyverse: Desarrollado por Hadley Wickham y muchos
más. Link a la web.Este último paquete, tidyverse es una colección de
paquetes que permiten realizar muchas tareas de exploración, limpieza y
transformación de datos.
Para utilizar un paquete, lo primero que tenemos que hacer es
instalarlos. Eso lo hacemos con la función
install.packages() y dentro del paréntesis tenemos que
poner el nombre del paquete. Tengan en cuenta que:
R es un lenguaje case sensitive o sea que hay que prestar atención a mayúsculas y minúsculas.
Para instalar los paquetes hay que usar comillas
Este es un paso que hacemos una sola vez por computadora.
Para correr el código se tienen que parar en la línea de código que
quieren usar y apretar las teclas Ctrl + Enter
o bien el triángulo verde (como si fuera un ícono de “Play”
▶️)
# Instalar los paquetes readxl y tidyverse
install.packages("tidyverse")
install.packages("readxl")Esto lo que hace es instalar paquetes desde CRAN, que es un repositorio donde se publican los paquetes, asegurando un estándar de calidad y de documentación que hace que trabajar con cualquier paquete de CRAN sea seguro.
Para usar las funciones de los paquetes que instalamos, ahora tenemos que cargarlos. Esto lo que hace es de alguna manera “activar” el paquete y que podamos empezar sus funciones.
Para cargar un paquete tenemos que usar la función
library(). Recuerden prestar atención a las mayúsculas y
minúsculas. Ahora no son necesarias las comillas.
# Cargar los paquetes readxl y tidyverse
library(tidyverse)
library(readxl)Una de las formas en las que nos damos cuenta que el paquete está instalado es cuando empezamos a escribir su nombre y nos aparece el nombre del paquete para autocompletar. Esta es una de las ventajas de trabajar en RStudio.
Recuerden:
La instalación de los paquetes se hace una sola vez por computadora.
La carga de los paquetese se hace cada vez que se abre un script.
Para este curso desarrollamos un paquete, introR4hr que
consiste en una serie de tutoriales interactivos que iremos compartiendo
a lo largo del curso.
introR4hr no es un paquete publicado en CRAN por lo cual hay que
descargar la versión de desarrollo desde el repositorio de GitHub y
seguir los siguientes pasos:
# Instalar los paquetes remotes y learnr
install.packages("remotes")
install.packages("learnr")
# Instalar el paquete introR4hr desde GitHub
remotes::install_github("chechoid/introR4hr")La notación remotes::install_github() reemplaza
parcialmente a la función library() ya que no carga el
paquete (ahorrando memoria) y sólo utiliza la función que está
invocando.
Por eso luego usamos la siguiente sintaxis para cargar un tutorial interactivo.
learnr::run_tutorial("sesion0", "introR4hr")Donde:
sesion0 es el nombre del tutorialintroR4hr es el nombre del paqueteComo gran parte de los datos que vamos a usar en la vida son archivos
de Excel vamos a usar la función read_excel() del paquete
readxl para levantar dos archivos: el archivo
maestro.xlsx que contiene un listado de empleados de una
empresa, y el archivo salarios.xlsx que contiene el sueldo
base de algunos de los empleados del listado.
# Cargar el archivo maestro.xlsx
maestro <- read_excel("maestro.xlsx")
# Cargar el archivo salarios.xlsx
salarios <- read_excel("salarios.xlsx")Los archivos no necesariamente tienen que estar en una computadora. También se pueden cargar archivos desde internet, por ejemplo, desde repositorios de GitHub:
# Cargar un archivo desde GitHub
encuesta <- read.csv("https://raw.githubusercontent.com/r4hr/kiwi2020/main/rh_ar.csv",
sep = ";",
encoding = "UTF-8")Otra alternativa para leer archivos .csv cuando el
delimitador entre campos no es una coma (,) es usar la
función read_delim() del paquete readr que
viene en tidyverse.
encuesta <- read_delim("https://raw.githubusercontent.com/r4hr/kiwi2020/main/rh_ar.csv",
delim = ";") # Indicamos el delimitador de camposUna función que nos permite ver el contenido de estos data
frames es la función View().
Otra función interesante para explorar el contenido de un data frame
es la función glimpse() del paquete dplyr que
forma parte del paquete tidyverse.
# Explorar los dataframes maestro, salarios y encuesta
glimpse(maestro)## Rows: 522
## Columns: 8
## $ ID <dbl> 180, 242, 260, 277, 278, 304, 314, 315, 345, 362, 375, 38…
## $ ANTIGUEDAD <dbl> 38, 37, 36, 36, 36, 35, 35, 35, 40, 33, 32, 32, 32, 32, 3…
## $ EDAD <dbl> 63, 64, 61, 64, 59, 57, 54, 56, 59, 59, 55, 62, 52, 52, 6…
## $ ESTADO_CIVIL <chr> "C", "C", "C", "S", "C", "K", "C", "K", "C", "S", "S", "S…
## $ HIJOS <dbl> 1, 2, 2, 4, 0, 1, 4, 3, 2, 1, 5, 0, 4, 2, 3, 2, 2, 0, 4, …
## $ AREA <chr> "PRODUCCION 1", "PRODUCCION 1", "PRODUCCION 1", "PRODUCCI…
## $ ID_CAT <chr> "5", "5", "5", "5", "4", "4", "4", "4", "5", "4", "5", "5…
## $ N_CATEG <chr> "OP. CAT. 5", "OP. CAT. 5", "OP. CAT. 5", "OP. CAT. 5", "…
glimpse(salarios)## Rows: 135
## Columns: 3
## $ ID <dbl> 597, 789, 791, 804, 816, 820, 851, 864, 867, 872, 892, 898, 918…
## $ PUESTO <chr> "TEC. MANTENIMIENTO", "VOLANTE", "JEFE", "LIDER DE EQUIPO", "LI…
## $ SUELDO <dbl> 25129, 24474, 44344, 34235, 26401, 26682, 23851, 25811, 25877, …
glimpse(encuesta)## Rows: 528
## Columns: 45
## $ Marca.temporal <dttm> 2020-09-30 20:29:06, 2020-09-30 21:45:26, …
## $ genero <chr> "Femenino", "Masculino", "Femenino", "Femen…
## $ genero_diverso <chr> "No", "Si", "No", "Si", "No", "No", "No", "…
## $ edad <dbl> 35, 33, 24, 32, 32, 26, 29, 30, 34, 41, 37,…
## $ discapacidad <chr> "No tengo ninguna discapacidad", "No tengo …
## $ nivel_formacion <chr> "Universitario completo", "Universitario en…
## $ carrera_grado <chr> "RRHH / RRLL / RRTT", "RRHH / RRLL / RRTT",…
## $ tipo_universidad <chr> "Universidad Privada", "Universidad Pública…
## $ pais <chr> "Argentina", "Argentina", "Argentina", "Arg…
## $ provincia <chr> "Buenos Aires", "Chaco", "Buenos Aires", "B…
## $ trabajo <chr> "Relación de Dependencia", "Relación de Dep…
## $ rubro <chr> "Comercio", "Otros", "Tecnología", "Hoteler…
## $ dotacion <dbl> 1433, 6000, 270, 700, 7500, 100, 700, 92, 5…
## $ origen_capital <chr> "Nacional", "Multinacional", "Nacional", "N…
## $ dotacion_rh <dbl> 10, 55, 7, 4, 25, 3, 9, 2, 10, 1, 3, 7, 25,…
## $ puesto <chr> "Analista", "HRBP", "Analista", "Gerente", …
## $ tipo_contratacion <chr> "Full time", "Full time", "Full time", "Ful…
## $ funcion_rh <chr> "Administración de personal", "Relaciones l…
## $ personas_a_cargo <dbl> 0, 8, 0, 3, 0, 0, 2, 1, 0, 0, 0, 0, 0, 9, 0…
## $ anios_en_empresa <dbl> 0, 9, 1, 10, 2, 3, 5, 7, 2, 0, 1, 4, 0, 15,…
## $ anios_en_puesto <dbl> 0, 3, 1, 3, 2, 3, 3, 4, 2, 0, 1, 0, 2, 5, 1…
## $ anios_experiencia <dbl> 7, 8, 2, 10, 14, 5, 5, 4, 12, 10, 13, 9, 5,…
## $ sueldo_bruto <dbl> 55700, 55000, 47000, 86747, 85500, 73600, 8…
## $ beneficios <chr> "Tarjeta de descuento", "Medicina prepaga /…
## $ bono <chr> "Menos de un sueldo", "No recibo bono", "No…
## $ ajuste <chr> "1 solo", "2 ajustes", "1 solo", "1 solo", …
## $ ajuste_porcentaje <dbl> 20, 50, 25, 50, 10, 15, 17, 25, 30, 0, 46, …
## $ ajuste_mes <chr> "Marzo", "Septiembre", "Septiembre", "Enero…
## $ otros_proyectos <chr> "No", "No", "No", "Si, en emprendimiento re…
## $ erp <chr> "Enlatado propio", "SAP / SuccessFactors", …
## $ nombre_area <chr> "Recursos Humanos", "Recursos Humanos", "Re…
## $ mate <chr> "Si, está permitido", "Si, está permitido",…
## $ idioma_exigencia <chr> "No", "No", "No", "No", "No", "No", "No", N…
## $ idioma_porcentaje <dbl> 0.0, 0.0, 0.2, 0.0, 0.2, 0.0, 0.1, NA, 0.0,…
## $ contactos_linkedin <dbl> 500, 100, 3000, 1474, 9240, 1000, 9800, NA,…
## $ satisfaccion <dbl> 3, 5, 3, 5, 2, 3, 4, NA, 2, 5, 2, 3, 5, 5, …
## $ busqueda <chr> "No, pero escucho ofertas", "No, pero esc…
## $ beneficios_expectativa <chr> "Vacaciones extendidas, almuerzo,medicina p…
## $ rh_una_palabra <chr> "Servicio", "Indispensable", "Empatia", "Va…
## $ pregunta_bizarra <chr> "Si pensaba tener hijos en los próximos mes…
## $ teletrabajo <chr> "Voy rotando entre la oficina y el trabajo"…
## $ elementos <chr> "Computadora / Laptop", "Computadora / Lapt…
## $ valoracion_gestion_empresa <dbl> 3, 5, 3, 3, 2, 4, 4, NA, NA, NA, 4, 4, 5, 5…
## $ multiplicador <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ sueldo_ft <dbl> 55700, 55000, 47000, 86747, 85500, 73600, 8…
Otra función que se suele usar mucho para explorar los datos se llama
summary().
# Usar la función summary() con el objeto 'maestro' y 'salarios'
summary(maestro)## ID ANTIGUEDAD EDAD ESTADO_CIVIL
## Min. : 180.0 Min. : 0.000 Min. :21.00 Length:522
## 1st Qu.: 886.5 1st Qu.: 3.000 1st Qu.:29.00 Class :character
## Median :1664.0 Median : 7.000 Median :35.00 Mode :character
## Mean :1873.6 Mean : 8.839 Mean :37.35
## 3rd Qu.:3087.8 3rd Qu.:10.000 3rd Qu.:44.00
## Max. :3222.0 Max. :40.000 Max. :65.00
## HIJOS AREA ID_CAT N_CATEG
## Min. :0.000 Length:522 Length:522 Length:522
## 1st Qu.:0.000 Class :character Class :character Class :character
## Median :1.000 Mode :character Mode :character Mode :character
## Mean :1.588
## 3rd Qu.:2.000
## Max. :8.000
summary(salarios)## ID PUESTO SUELDO
## Min. : 597 Length:135 Min. :14776
## 1st Qu.:1438 Class :character 1st Qu.:24402
## Median :1639 Mode :character Median :28366
## Mean :1579 Mean :32913
## 3rd Qu.:1738 3rd Qu.:37094
## Max. :3051 Max. :94128
summary(encuesta)## Marca.temporal genero genero_diverso
## Min. :2020-09-30 20:29:06.00 Length:528 Length:528
## 1st Qu.:2020-10-02 09:29:50.75 Class :character Class :character
## Median :2020-10-06 17:35:05.00 Mode :character Mode :character
## Mean :2020-10-10 15:54:17.05
## 3rd Qu.:2020-10-17 14:38:04.50
## Max. :2020-11-01 21:48:56.00
##
## edad discapacidad nivel_formacion carrera_grado
## Min. :21.00 Length:528 Length:528 Length:528
## 1st Qu.:28.00 Class :character Class :character Class :character
## Median :32.00 Mode :character Mode :character Mode :character
## Mean :33.27
## 3rd Qu.:37.00
## Max. :63.00
##
## tipo_universidad pais provincia trabajo
## Length:528 Length:528 Length:528 Length:528
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## rubro dotacion origen_capital dotacion_rh
## Length:528 Min. : 3 Length:528 Min. : 0.00
## Class :character 1st Qu.: 100 Class :character 1st Qu.: 2.00
## Mode :character Median : 300 Mode :character Median : 5.00
## Mean : 2664 Mean : 40.37
## 3rd Qu.: 1000 3rd Qu.: 11.00
## Max. :400000 Max. :5000.00
##
## puesto tipo_contratacion funcion_rh personas_a_cargo
## Length:528 Length:528 Length:528 Min. : 0.00
## Class :character Class :character Class :character 1st Qu.: 0.00
## Mode :character Mode :character Mode :character Median : 0.00
## Mean : 4.28
## 3rd Qu.: 1.00
## Max. :800.00
##
## anios_en_empresa anios_en_puesto anios_experiencia sueldo_bruto
## Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 29400
## 1st Qu.: 1.000 1st Qu.: 1.000 1st Qu.: 4.000 1st Qu.: 54430
## Median : 3.000 Median : 2.000 Median : 7.000 Median : 72000
## Mean : 3.955 Mean : 2.798 Mean : 8.078 Mean : 80647
## 3rd Qu.: 5.000 3rd Qu.: 4.000 3rd Qu.:11.000 3rd Qu.: 96763
## Max. :25.000 Max. :17.000 Max. :35.000 Max. :210000
##
## beneficios bono ajuste ajuste_porcentaje
## Length:528 Length:528 Length:528 Min. : 0.00
## Class :character Class :character Class :character 1st Qu.: 5.00
## Mode :character Mode :character Mode :character Median : 15.00
## Mean : 44.96
## 3rd Qu.: 25.00
## Max. :5000.00
##
## ajuste_mes otros_proyectos erp nombre_area
## Length:528 Length:528 Length:528 Length:528
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## mate idioma_exigencia idioma_porcentaje contactos_linkedin
## Length:528 Length:528 Min. :0.0000 Min. : 0
## Class :character Class :character 1st Qu.:0.0000 1st Qu.: 250
## Mode :character Mode :character Median :0.0000 Median : 655
## Mean :0.1066 Mean : 2369
## 3rd Qu.:0.1000 3rd Qu.: 2290
## Max. :1.0000 Max. :30000
## NA's :101 NA's :86
## satisfaccion busqueda beneficios_expectativa rh_una_palabra
## Min. :1.000 Length:528 Length:528 Length:528
## 1st Qu.:3.000 Class :character Class :character Class :character
## Median :3.000 Mode :character Mode :character Mode :character
## Mean :3.258
## 3rd Qu.:4.000
## Max. :5.000
## NA's :75
## pregunta_bizarra teletrabajo elementos
## Length:528 Length:528 Length:528
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## valoracion_gestion_empresa multiplicador sueldo_ft
## Min. :1.000 Min. :1.000 Min. : 29400
## 1st Qu.:2.000 1st Qu.:1.000 1st Qu.: 55000
## Median :3.000 Median :1.000 Median : 72000
## Mean :3.072 Mean :1.017 Mean : 81335
## 3rd Qu.:4.000 3rd Qu.:1.000 3rd Qu.: 97175
## Max. :5.000 Max. :1.500 Max. :210000
## NA's :127
Esto que estamos haciendo se llama Análisis Exploratorio de Datos, pueden ver la sesión que hicimos en R4HR Club de R para RRHH en YouTube.
En R nos vamos a encontrar con varios tipos de variables. Los más usuales son:
int a los números enteros (que no tienen
decimales) o dbl cuando tienen decimales. A veces también
se los encuentra como num.chrfct.También existen las variables de tipo lógicas, también
conocidas como booleanas, que sólo pueden asumir los valores
TRUE o FALSE (o también T o
F), y las variables de fechas y horas, que como siempre es
un quilombo, tenemos toda
una sesión dedicada a eso en R4HR Club de R para RRHH.
Volvamos a usar la función glimpse() para ver los tipos
de variable que tienen el data frame salarios.
# Ver los tipos de variables de salarios
glimpse(salarios)## Rows: 135
## Columns: 3
## $ ID <dbl> 597, 789, 791, 804, 816, 820, 851, 864, 867, 872, 892, 898, 918…
## $ PUESTO <chr> "TEC. MANTENIMIENTO", "VOLANTE", "JEFE", "LIDER DE EQUIPO", "LI…
## $ SUELDO <dbl> 25129, 24474, 44344, 34235, 26401, 26682, 23851, 25811, 25877, …
Ahora realicemos un análisis exploratorio con la función
summary().
# Usar la función summary() con salarios
summary(salarios)## ID PUESTO SUELDO
## Min. : 597 Length:135 Min. :14776
## 1st Qu.:1438 Class :character 1st Qu.:24402
## Median :1639 Mode :character Median :28366
## Mean :1579 Mean :32913
## 3rd Qu.:1738 3rd Qu.:37094
## Max. :3051 Max. :94128
Con las variables numéricas podemos apreciar algunas medidas de resumen tales como:
Cuando la variable es de tipo chr solo podemos ver la
cantidad de elementos que tiene esa columna.
Probemos lo siguiente:
# Convertimos la variable chr en fct
salarios$PUESTO <- as.factor(salarios$PUESTO)Ahora volvamos a revisar el dataframe, primero con la función
glimpse() y luego con la función
summary().
# Usar la función glimpse() con el dataframe salarios
glimpse(salarios)## Rows: 135
## Columns: 3
## $ ID <dbl> 597, 789, 791, 804, 816, 820, 851, 864, 867, 872, 892, 898, 918…
## $ PUESTO <fct> TEC. MANTENIMIENTO, VOLANTE, JEFE, LIDER DE EQUIPO, LIDER DE EQ…
## $ SUELDO <dbl> 25129, 24474, 44344, 34235, 26401, 26682, 23851, 25811, 25877, …
# Y ahora usar la función summary()
summary(salarios)## ID PUESTO SUELDO
## Min. : 597 ANALISTA :30 Min. :14776
## 1st Qu.:1438 LIDER DE EQUIPO :30 1st Qu.:24402
## Median :1639 INGENIERO :21 Median :28366
## Mean :1579 TEC. MANTENIMIENTO:15 Mean :32913
## 3rd Qu.:1738 JEFE :14 3rd Qu.:37094
## Max. :3051 VOLANTE :11 Max. :94128
## (Other) :14
Ahora que la variable PUESTO es una variable de tipo
factor podemos ver con la función summary() la
cantidad de casos que tenemos por puesto.
Otra de las cosas que podemos hacer con las variables de tipo
factor es ordenarlas. Vamos a crear una versión del data
frame sólo con algunos valores para hacer más fácil el ejemplo.
# Creamos un nuevo data frame
salarios2 <- salarios %>%
filter(PUESTO %in% c("GERENTE", "JEFE", "ANALISTA", "TEC. MANTENIMIENTO"))
# Y ahora realicemos un gráfico de barras contando la cantidad de personas en cada puesto
ggplot(salarios2, aes(x = PUESTO)) +
geom_bar()El gráfico anterior, desde el punto de vista técnico es correcto, porque nos muestra la cantidad de personas en cada una de las posiciones, pero el gráfico está desordenado lo cual no es ideal porque no muestra la jerarquía de las posiciones.
Con las variables de tipo factor podemos corregir eso.
# Modifiquemos el orden de la columna PUESTO
salarios2 <- salarios2 %>%
mutate(PUESTO = factor(PUESTO,
levels = c("GERENTE", "JEFE", "TEC. MANTENIMIENTO", "ANALISTA")))
# Repitamos el gráfico anterior
ggplot(salarios2, aes(x = PUESTO)) +
geom_bar()Para saber más como trabajar con variables factor pueden
ver este contenido de R4HR Club
de R para RRHH.
Para seguir practicando con un contenido muy accesible y entretenido pueden buscar estos libros:
Además, pueden revisar y utilizar todo el contenido de R4HR Club de R para RRHH disponible en Google Drive y YouTube.
Recuerden hacer todas las consultas en el canal #auxilio en Slack