Cargando los datos

library(knitr)
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(ggplot2)
#analisis de despacho mes de febrero
data <- read.csv("data_proyecto.csv",T,",")
head(data)
##        Fecha  Codigo PesoDespachado CantidadTeorica
## 1 2019-02-01 1500017         15.164              15
## 2 2019-02-01 1500017         14.880              15
## 3 2019-02-01 1003590         16.382              12
## 4 2019-02-01 1500017         18.851              15
## 5 2019-02-01 1500017         15.198              15
## 6 2019-02-01 1003590         17.095              15

Limpiando los datos

Se eliminan los datos que no posean informacion en cualquiera de las columnas y se transforman los datos a un tipo valido.

data <- subset(data, !is.na(Fecha) & !is.na(Codigo) & !is.na(PesoDespachado) & !is.na(CantidadTeorica))
#conversion de datos
data$Fecha <- as.Date(data$Fecha)
data$Codigo <- as.character(data$Codigo)
data$PesoDespachado <- as.numeric(as.character(data$PesoDespachado))
data$CantidadTeorica <- as.numeric(as.character(data$CantidadTeorica))

Evaluando es la diferencia entre lo real y lo teorico

Para esto restamos lo real que se despacho con lo que pidio el cliente.

#calculando diferencia entre la cantidad teorica y la despachada
data$Diferencia <- data$PesoDespachado - data$CantidadTeorica

Agrupacion, suma y seleccion

Se agrupan los datos por los codigos de producto, se suman y se seleccion los codigos que tengan mas de 1,000 unidades de volumen vendidas durante el mes.

#calculando que codigos tienen mas despacho
cantidad_despachos_codigo<-data %>% group_by(Codigo) %>% summarise(suma=sum(PesoDespachado))
#tomando los datos mayores a 100 despachos
sumar_mayor_1000 <- subset(cantidad_despachos_codigo, suma>1000)
#los pruductos a seleccionar representan el 80.58% del volumen de ventas ventas
sum(sumar_mayor_1000$suma)/sum(cantidad_despachos_codigo$suma)
## [1] 0.8058065
#limpiando data original solo para estos codigos
data2 <- subset(data, Codigo %in% sumar_mayor_1000$Codigo)

Analisis estadistico

Se realiza un analisis estadistico de los datos agrupados por codigo.

#Agrupando por Codigo
data4 <- data2 %>% group_by(Codigo) %>% summarise(mediaDif = median(Diferencia), desviacionDif = sd(Diferencia), minimoDif = min(Diferencia), maximoDif = max(Diferencia), mediaPesoReal = mean(PesoDespachado), desviacionPesoReal = sd(PesoDespachado), mediaPesoTeorico = mean(CantidadTeorica), desviacionPesoTeorico = sd(CantidadTeorica), totalDespachoReal=sum(PesoDespachado), totalDespachoTeorico = sum(CantidadTeorica), totalItems=n()) %>% mutate(freqReal = totalDespachoReal/sum(totalDespachoReal), freqTeorico = totalDespachoTeorico / sum(totalDespachoTeorico))

Graficando

Graficando lo despachado y lo requerido para cada producto en el mes de febrero y el histograma de la diferencia para cada producto

#Graficando
for(i in 1:length(data4$Codigo)){
  graficar <- subset(data2, Codigo == data4$Codigo[i])
  p <- ggplot(graficar) + geom_point(aes(x=Fecha, y=PesoDespachado, colour="Real")) + stat_smooth(method="loess", aes(x=Fecha, y=PesoDespachado, colour="Real")) + geom_point(aes(x=Fecha, y=CantidadTeorica, colour="Teorico")) + stat_smooth(method="loess", aes(x=Fecha, y=CantidadTeorica, colour="Teorico"))+labs(title=paste("Despacho real y teorico del producto: " ,data4$Codigo[i])) + xlab("Mes de Febrero") + ylab("Cantidades") + scale_colour_manual(name="Mediciones", values=c("blue", "red"))
  imprimir_encabezado <- select(subset(data4, Codigo == data4$Codigo[i]),Codigo,mediaPesoReal,desviacionPesoReal,mediaPesoTeorico,desviacionPesoTeorico, mediaDif, desviacionDif)
  names(imprimir_encabezado) <- c("Codigo", "M. Real", "Desv. Real", "M. Teorico", "Desv. Teorico", "M. Diferencia", "Desv. Diferencia")
  print(kable(imprimir_encabezado))
  print(p)
  p <- ggplot(graficar, aes(x=Diferencia)) + geom_histogram(colour="black", fill="white") + geom_freqpoly() + labs(title=paste("Histograma de la diferencia del producto: " ,data4$Codigo[i])) + xlab("Mes de Febrero") + ylab("Cantidad") + scale_colour_manual(name="Diferencia", values=c("green"))
  print(p)
}
## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1000350    13.36268    0.9229996     12.29522       0.9211915           1.107           1.015276

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1000457    11.65575     2.473285      11.6855        2.427699          -0.017          0.4412849

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1000751    12.23115    0.5642698     12.06806       0.4198918           0.227          0.7807747

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1000813    13.35254    0.8676953     14.75535        18.92941         -0.0215           18.90907

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1000834    12.48407    0.4467438       12.012        0.141194           0.387          0.4730395

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1001466    18.69206     4.977539     17.79343        4.841308           0.851           1.851188

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1003590    12.89536     1.384209     12.26482        1.162946           0.558           1.292517

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1019359    12.77494    0.8858264     12.11051       0.4951041           0.738          0.9439161

## 
## 
## Codigo      M. Real   Desv. Real   M. Teorico   Desv. Teorico   M. Diferencia   Desv. Diferencia
## --------  ---------  -----------  -----------  --------------  --------------  -----------------
## 1500017    15.19494     1.627031     14.97703       0.2616055           0.075           1.603632

El analisis estadistico para cada producto es

kable(data4)
Codigo mediaDif desviacionDif minimoDif maximoDif mediaPesoReal desviacionPesoReal mediaPesoTeorico desviacionPesoTeorico totalDespachoReal totalDespachoTeorico totalItems freqReal freqTeorico
1000350 1.1070 1.0152763 -3.993 6.578 13.36268 0.9229996 12.29522 0.9211915 6480.899 5963.183 485 0.1334644 0.1252227
1000457 -0.0170 0.4412849 -6.048 1.677 11.65575 2.4732850 11.68550 2.4276991 2634.200 2640.922 226 0.0542474 0.0554575
1000751 0.2270 0.7807747 -4.343 1.956 12.23115 0.5642698 12.06806 0.4198918 1161.959 1146.466 95 0.0239288 0.0240750
1000813 -0.0215 18.9090715 -318.096 3.794 13.35254 0.8676953 14.75535 18.9294065 4833.620 5341.436 362 0.0995411 0.1121665
1000834 0.3870 0.4730395 -1.891 2.741 12.48407 0.4467438 12.01200 0.1411940 3121.017 3003.000 250 0.0642726 0.0630609
1001466 0.8510 1.8511882 -9.076 10.497 18.69206 4.9775394 17.79343 4.8413075 3981.408 3790.000 213 0.0819911 0.0795874
1003590 0.5580 1.2925166 -6.636 4.382 12.89536 1.3842089 12.26482 1.1629456 3984.665 3789.828 309 0.0820582 0.0795838
1019359 0.7380 0.9439161 -2.367 3.910 12.77494 0.8858264 12.11051 0.4951041 2516.664 2385.770 197 0.0518269 0.0500995
1500017 0.0750 1.6036324 -4.237 4.973 15.19494 1.6270307 14.97703 0.2616055 19844.590 19560.000 1306 0.4086695 0.4107466

De esto se estima que se pierde oportunidad de venta si se da menos producto que el requerido y la empresa pierde si da de mas

data4$Estimacion <- data4$mediaDif * data4$totalItems
data4$Resultado <- ifelse(data4$Estimacion >=0, "Verificar calibracion", "Descontento cliente")
data5 <- select(data4, Codigo, mediaDif, Estimacion, Resultado)
names(data5) <- c("Codigo", "Media Diferencia", "Estimacion", "Accion a tomar")
kable(data5)
Codigo Media Diferencia Estimacion Accion a tomar
1000350 1.1070 536.895 Verificar calibracion
1000457 -0.0170 -3.842 Descontento cliente
1000751 0.2270 21.565 Verificar calibracion
1000813 -0.0215 -7.783 Descontento cliente
1000834 0.3870 96.750 Verificar calibracion
1001466 0.8510 181.263 Verificar calibracion
1003590 0.5580 172.422 Verificar calibracion
1019359 0.7380 145.386 Verificar calibracion
1500017 0.0750 97.950 Verificar calibracion