1.Instalamos y cargamos las librerías necesarias
#Cargar librerías
library(dplyr)
library(skimr)
library(lubridate)
library(tidyr)
library(ggplot2)
library(readxl)
library(rJava)
library(xlsx)
2.Cargamos los datos
df<- read_excel("Base Mineria de datos.xlsx", sheet = "OCt-DIc")
# CAMBIAMOS A TIPO DATE( Fechas ) y a Factor
df<-df%>%mutate(Fecha=as.Date.POSIXct(Fecha),`FECHA ESTADO`=as.Date.POSIXct(`FECHA ESTADO`), `Entrega Por`= as.factor(`Entrega Por`), Fact = as.factor(Fact))
df
## # A tibble: 2,042 x 17
## CI Cliente Fecha Mes Urg `Entrega Por` `ESTADO ACTUAL`
## <chr> <chr> <date> <chr> <dbl> <fct> <chr>
## 1 1713~ <NA> 2019-06-11 Junio NA 1 DEVOLUCION AL ~
## 2 0102~ <NA> 2019-06-11 Junio NA 1 DEVOLUCION AL ~
## 3 0104~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 4 1715~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 5 1718~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 6 1708~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 7 0917~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 8 0401~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 9 1310~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## 10 1600~ <NA> 2019-06-11 Junio NA 1 POD LIQUIDADO
## # ... with 2,032 more rows, and 10 more variables: `DETALLE ESTADO` <chr>,
## # `FECHA ESTADO` <date>, `NRO VISITAS` <dbl>, Éxito <chr>, Provincia <chr>,
## # Ciudad <chr>, Fact <fct>, Direccion <chr>, `Número 1` <lgl>, `Número
## # 2` <lgl>
# Descartamos ciertas variables
sum(is.na(df$`Número 2`))
## [1] 2042
df<-df%>%select(-c("Número 1",'Número 2'))
\[obj = \begin{cases} 1 & \text{ si se entrego el chip } \\ 0 & \text{ caso contrario} \end{cases}\]
# Creamos la variable objetivo
df<-df%>%mutate(dev=as.factor(ifelse(Éxito=='SIM Entregado',1,0)))
# Modificamos la variable Ciudad
df<-df%>%mutate(Valores = strsplit(Ciudad," - "))
ciudad<-function(){
x<-c()
for(i in 1:length(df$Ciudad)){
x[i]<-df$Valores[[i]][1]
}
return(x)
}
capitales<-function(){
x<-c()
for(i in 1:length(df$Ciudad)){
x[i]<-length(df$Valores[[i]])
}
return(x)
}
df<-df%>%mutate(CIUDAD=ciudad(), Capitales = ifelse(capitales()>1,1,0))
3.Análisis inicial
glimpse(df) #Vision General
## Rows: 2,042
## Columns: 19
## $ CI <chr> "1713234068", "0102164951", "0104413398", "1715351...
## $ Cliente <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ Fecha <date> 2019-06-11, 2019-06-11, 2019-06-11, 2019-06-11, 2...
## $ Mes <chr> "Junio", "Junio", "Junio", "Junio", "Junio", "Juni...
## $ Urg <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ `Entrega Por` <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
## $ `ESTADO ACTUAL` <chr> "DEVOLUCION AL SHIPPER", "DEVOLUCION AL SHIPPER", ...
## $ `DETALLE ESTADO` <chr> "Cliente de Viaje/Vacaciones", "No Desea Recibir T...
## $ `FECHA ESTADO` <date> 2019-06-21, 2019-06-20, 2019-06-19, 2019-06-17, 2...
## $ `NRO VISITAS` <dbl> 1, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 3, 3, 2,...
## $ Éxito <chr> "SIM Devuelto", "SIM Devuelto", "SIM Entregado", "...
## $ Provincia <chr> "PICHINCHA", "AZUAY", "AZUAY", "PICHINCHA", "PICHI...
## $ Ciudad <chr> "QUITO - QUITO", "CUENCA - CUENCA", "CUENCA - CUEN...
## $ Fact <fct> 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0,...
## $ Direccion <chr> "DOMICILIO CALLE JAIME CHIRIBOGA N51-105 AV FLORID...
## $ dev <fct> 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,...
## $ Valores <list> [<"QUITO", "QUITO">, <"CUENCA", "CUENCA">, <"CUEN...
## $ CIUDAD <chr> "QUITO", "CUENCA", "CUENCA", "QUITO", "QUITO", "RI...
## $ Capitales <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
skim(df) #Summary
| Name | df |
| Number of rows | 2042 |
| Number of columns | 19 |
| _______________________ | |
| Column type frequency: | |
| character | 10 |
| Date | 2 |
| factor | 3 |
| list | 1 |
| numeric | 3 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| CI | 0 | 1.00 | 9 | 13 | 0 | 1914 | 0 |
| Cliente | 634 | 0.69 | 10 | 67 | 0 | 1336 | 1 |
| Mes | 0 | 1.00 | 5 | 10 | 0 | 10 | 0 |
| ESTADO ACTUAL | 10 | 1.00 | 9 | 23 | 0 | 7 | 0 |
| DETALLE ESTADO | 10 | 1.00 | 13 | 30 | 0 | 29 | 0 |
| Éxito | 0 | 1.00 | 9 | 13 | 0 | 3 | 0 |
| Provincia | 0 | 1.00 | 4 | 16 | 0 | 24 | 0 |
| Ciudad | 5 | 1.00 | 4 | 49 | 0 | 107 | 0 |
| Direccion | 30 | 0.99 | 14 | 360 | 0 | 1851 | 1 |
| CIUDAD | 5 | 1.00 | 4 | 49 | 0 | 107 | 0 |
Variable type: Date
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| Fecha | 0 | 1 | 2019-06-11 | 2020-03-18 | 2019-11-06 | 190 |
| FECHA ESTADO | 10 | 1 | 2019-01-07 | 2020-12-03 | 2019-11-14 | 242 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| Entrega Por | 0 | 1 | FALSE | 2 | 1: 1985, 0: 57 |
| Fact | 0 | 1 | FALSE | 2 | 0: 1474, 1: 568 |
| dev | 0 | 1 | FALSE | 2 | 1: 1391, 0: 651 |
Variable type: list
| skim_variable | n_missing | complete_rate | n_unique | min_length | max_length |
|---|---|---|---|---|---|
| Valores | 5 | 1 | 107 | 1 | 2 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Urg | 634 | 0.69 | 174.35 | 50.61 | 83 | 132 | 175 | 222.25 | 253 | ▅▆▆▆▇ |
| NRO VISITAS | 10 | 1.00 | 1.51 | 0.73 | 0 | 1 | 1 | 2.00 | 3 | ▁▇▁▃▂ |
| Capitales | 0 | 1.00 | 0.70 | 0.46 | 0 | 0 | 1 | 1.00 | 1 | ▃▁▁▁▇ |
lista<-as.data.frame(skim(df))
knitr::kable(skim(df))# lo que hace kable es dar un formato agradable al resumen
| skim_type | skim_variable | n_missing | complete_rate | character.min | character.max | character.empty | character.n_unique | character.whitespace | Date.min | Date.max | Date.median | Date.n_unique | factor.ordered | factor.n_unique | factor.top_counts | list.n_unique | list.min_length | list.max_length | numeric.mean | numeric.sd | numeric.p0 | numeric.p25 | numeric.p50 | numeric.p75 | numeric.p100 | numeric.hist |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| character | CI | 0 | 1.0000000 | 9 | 13 | 0 | 1914 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | Cliente | 634 | 0.6895201 | 10 | 67 | 0 | 1336 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | Mes | 0 | 1.0000000 | 5 | 10 | 0 | 10 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | ESTADO ACTUAL | 10 | 0.9951028 | 9 | 23 | 0 | 7 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | DETALLE ESTADO | 10 | 0.9951028 | 13 | 30 | 0 | 29 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | Éxito | 0 | 1.0000000 | 9 | 13 | 0 | 3 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | Provincia | 0 | 1.0000000 | 4 | 16 | 0 | 24 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | Ciudad | 5 | 0.9975514 | 4 | 49 | 0 | 107 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | Direccion | 30 | 0.9853085 | 14 | 360 | 0 | 1851 | 1 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| character | CIUDAD | 5 | 0.9975514 | 4 | 49 | 0 | 107 | 0 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Date | Fecha | 0 | 1.0000000 | NA | NA | NA | NA | NA | 2019-06-11 | 2020-03-18 | 2019-11-06 | 190 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Date | FECHA ESTADO | 10 | 0.9951028 | NA | NA | NA | NA | NA | 2019-01-07 | 2020-12-03 | 2019-11-14 | 242 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| factor | Entrega Por | 0 | 1.0000000 | NA | NA | NA | NA | NA | NA | NA | NA | NA | FALSE | 2 | 1: 1985, 0: 57 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| factor | Fact | 0 | 1.0000000 | NA | NA | NA | NA | NA | NA | NA | NA | NA | FALSE | 2 | 0: 1474, 1: 568 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| factor | dev | 0 | 1.0000000 | NA | NA | NA | NA | NA | NA | NA | NA | NA | FALSE | 2 | 1: 1391, 0: 651 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| list | Valores | 5 | 0.9975514 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 107 | 1 | 2 | NA | NA | NA | NA | NA | NA | NA | NA |
| numeric | Urg | 634 | 0.6895201 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 174.3458807 | 50.6132721 | 83 | 132 | 175 | 222.25 | 253 | ▅▆▆▆▇ |
| numeric | NRO VISITAS | 10 | 0.9951028 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 1.5103346 | 0.7291439 | 0 | 1 | 1 | 2.00 | 3 | ▁▇▁▃▂ |
| numeric | Capitales | 0 | 1.0000000 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | 0.6973555 | 0.4595152 | 0 | 0 | 1 | 1.00 | 1 | ▃▁▁▁▇ |
Conclusiones:
Se tienes 634 clientes sin identificar el nombre, al igual que nuestra variable Urg.
No existen datos faltantes en el campo de Cedula de Identidad por lo cual no es significativo la falta de nombres en los clientes.
Existen Estados de los cuales no se cuenta con informacion complementaria, sin embargo no existen datos faltantes en nuestra variable Objetivo.
Un problema detectado es la ausencia de 5 registros en el campo CIUDAD, al igual que no se tiene 30 registros en el atributo Direccion. Estos datos seran imputados.
4.Datos Faltantes
#Retiramos los faltantes en CIUDAD
df<-df[!is.na(df$CIUDAD),]
#Retiramos los faltantes en Direccion
#df<-df[!is.na(df$Direccion)]
df<-df%>%select(-c("Ciudad",'Valores','DETALLE ESTADO','FECHA ESTADO','Entrega Por','Fact',"Capitales",'Éxito'))
5.Exportamos a Excel
skim(df)
| Name | df |
| Number of rows | 2037 |
| Number of columns | 11 |
| _______________________ | |
| Column type frequency: | |
| character | 7 |
| Date | 1 |
| factor | 1 |
| numeric | 2 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| CI | 0 | 1.00 | 9 | 13 | 0 | 1909 | 0 |
| Cliente | 634 | 0.69 | 10 | 67 | 0 | 1331 | 1 |
| Mes | 0 | 1.00 | 5 | 10 | 0 | 10 | 0 |
| ESTADO ACTUAL | 10 | 1.00 | 9 | 23 | 0 | 7 | 0 |
| Provincia | 0 | 1.00 | 4 | 16 | 0 | 24 | 0 |
| Direccion | 30 | 0.99 | 14 | 360 | 0 | 1846 | 1 |
| CIUDAD | 0 | 1.00 | 4 | 38 | 0 | 87 | 0 |
Variable type: Date
| skim_variable | n_missing | complete_rate | min | max | median | n_unique |
|---|---|---|---|---|---|---|
| Fecha | 0 | 1 | 2019-06-11 | 2020-03-18 | 2019-11-06 | 190 |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| dev | 0 | 1 | FALSE | 2 | 1: 1386, 0: 651 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Urg | 634 | 0.69 | 174.40 | 50.69 | 83 | 131.5 | 175 | 223 | 253 | ▅▆▆▆▇ |
| NRO VISITAS | 10 | 1.00 | 1.51 | 0.73 | 0 | 1.0 | 1 | 2 | 3 | ▁▇▁▃▂ |
write.xlsx(df, file = "Base Retail.xlsx", sheetName = "DATOS", append = TRUE)