Trabajo Aplicado manejo de BBDD

Este trabajo tiene como finalidad realizar trabajo y análisis de una base de datos. Se evaluará la correcta ejecución del código y el uso eficiente de las herramientas de codificación entregadas.

Formato de entrega:

  1. Agregar todos/as los/as integrantes del grupo.

  2. Escriba el enunciado de la pregunta y luego su respuesta.

  3. El archivo .R debe tener la siguiente forma: Tarea Grupo x - Apellido.

  4. Solo un/a integrante del grupo debe entregar el archivo .R por webcursos.

  5. El plazo de entrega es hasta finalizar la clase.

El formato tiene un puntaje asignado dentro de la nota.

Evaluación de productividad

Considere una empresa que se dedica a la fabricación de Artículos de Aseo. Esta compañía quiere evaluar la productividad de sus trabajadores, y necesita ayuda con el manejo de datos para tomar una decisión respecto del pago de bonos a los/as trabajadores/as. Para esto, deciden contratarlo/a como DS encargado/a de generar información para la toma de decisiones. El sector particular de la empresa que requiere de su ayuda está compuesto por 50 empleados que manejan 7 máquinas destinadas para la producción de distintos artículos de aseo. Usted cuenta con una base de datos que recopila informes diarios de producción de todos los/as trabajadores/as. Se le pide trabajar con esta base de datos para la generación de “KPI’s” (Key Performance Indicators) valiosos para la empresa.

1. Cargue la base de datos Act3_S2_2020.csv y los paquetes que sean necesarios para trabajar un data.table.(1 punto)

library(data.table)
prod<-fread("Act3_S2_2020.csv")

2. Cuando los empleados de la compañía tienen problemas con las máquinas, se les pide que marquen “NA” en su hoja de producción si no pueden arreglarlos. Elimine todas las observaciones donde hay NA’s en la columna “Produccion”.(4 puntos)

prod <- prod[is.na(Produccion)==FALSE]

3. Reemplace el objeto anterior para que solo contenga las siguientes variables de interés: Empleado, Dia, Maquina, Jornada, Produccion y Desechados.(4 puntos)

prod<-prod[,.(Empleado,Dia,Maquina,Jornada,Produccion,Desechados)]

4. Dado el especial comportamiento de la producción por parte de las máquinas “KLP5000” y “RBLR4200”, la dirección le pide que no tenga en consideración el rendimiento de los empleados en dichas máquinas para el cálculo del bono. Elimine todas las observaciones de la base de datos en las que se usen dichas máquinas.(7 puntos)

prod<-prod[Maquina!="KLP5000" & Maquina!="RBLR4200"]

5. A la hora de producir, algunas unidades resultan ser defectuosas y no pasan la revisión del control de calidad. Estas han sido contabilizadas en la columna “Desechados”. Use esta columna y la de “Producción” para calcular, en una nueva variable, el número de unidades que sí pasaron el control de calidad en cada uno de los turnos.(4 puntos)

prod[,Good:=Produccion-Desechados]

6. Cree un nuevo objeto que contenga el total de unidades buenas producidas por máquina, el total de horas utilizadas en cada máquina y la producción por hora promedio para cada máquina (considere como producción solo aquellas unidades que salieron buenas).(7 puntos)

prod1 <- prod[, .(Total_buenos=sum(Good),Total_horas=sum(Jornada)), by = Maquina]

prod1[,KPME:=Total_buenos/Total_horas]

7. Ahora queremos analizar el rendimiento de cada trabajador en comparación al promedio en cada jornada. Para esto, usted debe:

  1. Hacer un merge entre el objeto de la pregunta 6 y la base de datos de que ha estado trabajando, usando como llave la variable “Maquina”.(7 puntos)
prodmerge <- merge(x=prod,y=prod1,by="Maquina")
  1. Generar una nueva columna que corresponda a la producción media del trabajador por hora en cada jornada (Para esto, considere solo las unidades “Buenas”).(4 puntos)
prodmerge[,WorkPME:=Good/Jornada]
  1. Generar una variable “Rendimiento” que represente el porcentaje de rendimiento sobre o bajo el promedio en cada jornada. Para esto, tome la variable generada en (b) y divídala por el promedio calculado en la pregunta 6.(4 puntos)
prodmerge[,Rendimiento:=WorkPME/KPME]

8. Concretamente, la empresa busca que se pague un bono de acuerdo a la cantidad de turnos en los que cada trabajador ha rendido sobre el promedio. Genere una variable binaria, llamada “Identificador”, que tome un valor igual a 0 para las observaciones en las que se observa un rendimiento inferior o igual al promedio, y 1 cuando el rendimiento es superior al promedio.(6 puntos)

prodmerge[Rendimiento<=1, Identificador:=0]
prodmerge[Rendimiento>1, Identificador:=1]

9. Suponga que la empresa ha decidido arbitrariamente que solo los trabajadores que hayan rendido por sobre el promedio en más de 45 turnos podrán acceder al bono. Encuentre los/as trabajadores/as que accederán al bono.(6 puntos)

Pista: Cree un objeto similar a los que tuvo que crear para la pregunta 6, que contenga la suma de la variable Identificador para cada empleado.

rend_ind <- prodmerge[, sum(Identificador), by = Empleado]
names(rend_ind) <- c("Empleado","Turnos")
rend_ind[Turnos<=45, Bono:=0]
rend_ind[Turnos>45, Bono:=1]

10. ¿Cuántos empleados/as obtienen el bono? Utilice algún comando para calcular este número, no sirve contar la tabla.(6 puntos)

rend_ind[Bono==1,.N]
## [1] 20