A la base de datos se le hicieron los siguientes
cambios:
1. Se cambió el formato a fecha corta.
2. Se duplicaron los primeros 5 registros.
3. Se cambió le formato a hora (español México).
4. Se cambió el formato a código de barras (para que salga
completo).
5. Se guardó como CSV UTF 8 (Delimitado por comas).
library(dplyr)
library(tidyverse)
library(janitor)
library(tidyr)
library(lubridate)
df<-read.csv("C:\\Users\\javaw\\OneDrive - Instituto Tecnologico y de Estudios Superiores de Monterrey\\7mo Semestre\\Modulo 3\\Abarrotes_Ventas2.csv")
colnames(df)
## [1] "ï..vcClaveTienda" "DescGiro" "Codigo.Barras"
## [4] "PLU" "Fecha" "Hora"
## [7] "Marca" "Fabricante" "Producto"
## [10] "Precio" "Ult.Costo" "Unidades"
## [13] "F.Ticket" "NombreDepartamento" "NombreFamilia"
## [16] "NombreCategoria" "Estado" "Mts.2"
## [19] "Tipo.ubicación" "Giro" "Hora.inicio"
## [22] "Hora.cierre"
summary(df)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU
## Length:200620 Length:200620 Min. :8.347e+05 Min. : 1.00
## Class :character Class :character 1st Qu.:7.500e+12 1st Qu.: 1.00
## Mode :character Mode :character Median :7.500e+12 Median : 1.00
## Mean :5.949e+12 Mean : 2.11
## 3rd Qu.:7.500e+12 3rd Qu.: 1.00
## Max. :1.750e+13 Max. :30.00
## NA's :199183
## Fecha Hora Marca Fabricante
## Length:200620 Length:200620 Length:200620 Length:200620
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Producto Precio Ult.Costo Unidades
## Length:200620 Min. :-147.00 Min. : 0.38 Min. : 0.200
## Class :character 1st Qu.: 11.00 1st Qu.: 8.46 1st Qu.: 1.000
## Mode :character Median : 16.00 Median : 12.31 Median : 1.000
## Mean : 19.42 Mean : 15.31 Mean : 1.262
## 3rd Qu.: 25.00 3rd Qu.: 19.23 3rd Qu.: 1.000
## Max. :1000.00 Max. :769.23 Max. :96.000
##
## F.Ticket NombreDepartamento NombreFamilia NombreCategoria
## Min. : 1 Length:200620 Length:200620 Length:200620
## 1st Qu.: 33967 Class :character Class :character Class :character
## Median :105996 Mode :character Mode :character Mode :character
## Mean :193994
## 3rd Qu.:383009
## Max. :450040
##
## Estado Mts.2 Tipo.ubicación Giro
## Length:200620 Min. :47.0 Length:200620 Length:200620
## Class :character 1st Qu.:53.0 Class :character Class :character
## Mode :character Median :60.0 Mode :character Mode :character
## Mean :56.6
## 3rd Qu.:60.0
## Max. :62.0
##
## Hora.inicio Hora.cierre
## Length:200620 Length:200620
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
count(df, ï..vcClaveTienda, sort=TRUE)
count(df,DescGiro, sort=TRUE)
count(df,Marca, sort=TRUE)
count(df,Fabricante, sort=TRUE)
count(df,Producto, sort=TRUE)
count(df,NombreDepartamento, sort=TRUE)
count(df,NombreFamilia, sort=TRUE)
count(df,NombreCategoria, sort=TRUE)
count(df,Estado, sort=TRUE)
count(df,Mts.2, sort=TRUE)
count(df, Tipo.ubicación, sort=TRUE)
count(df,Giro, sort=TRUE)
count(df,Hora.inicio, sort=TRUE)
count(df,Hora.cierre, sort=TRUE)
Observaciones
1. Casi ningun registro cuenta con PLU. 2. El formato de fecha ya sale
con el cambio previo. 3. El formato de hora ya sale con el cambio
previo. 4. Hay precios negativos. 5. Hay unidades menores a 1.
tibble(df)
## # A tibble: 200,620 x 22
## ï..vcClaveTienda DescGiro Codigo.Barras PLU Fecha Hora Marca Fabricante
## <chr> <chr> <dbl> <int> <chr> <chr> <chr> <chr>
## 1 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:1~ NUTR~ MEXILAC
## 2 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ DAN ~ DANONE DE~
## 3 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ BIMBO GRUPO BIM~
## 4 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ PEPSI PEPSI-COL~
## 5 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ BLAN~ FABRICA D~
## 6 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ FLASH ALEN
## 7 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ VARI~ DANONE DE~
## 8 MX001 Abarrotes 7500000000000 NA 19/06/~ 08:2~ ZOTE FABRICA D~
## 9 MX001 Abarrotes 7510000000000 NA 19/06/~ 08:2~ ALWA~ PROCTER &~
## 10 MX001 Abarrotes 32239052017 NA 19/06/~ 15:2~ JUMEX JUMEX
## # ... with 200,610 more rows, and 14 more variables: Producto <chr>,
## # Precio <dbl>, Ult.Costo <dbl>, Unidades <dbl>, F.Ticket <int>,
## # NombreDepartamento <chr>, NombreFamilia <chr>, NombreCategoria <chr>,
## # Estado <chr>, Mts.2 <int>, Tipo.ubicación <chr>, Giro <chr>,
## # Hora.inicio <chr>, Hora.cierre <chr>
str(df)
## 'data.frame': 200620 obs. of 22 variables:
## $ ï..vcClaveTienda : chr "MX001" "MX001" "MX001" "MX001" ...
## $ DescGiro : chr "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
## $ Codigo.Barras : num 7.5e+12 7.5e+12 7.5e+12 7.5e+12 7.5e+12 ...
## $ PLU : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fecha : chr "19/06/2020" "19/06/2020" "19/06/2020" "19/06/2020" ...
## $ Hora : chr "08:16:21" "08:23:33" "08:24:33" "08:24:33" ...
## $ Marca : chr "NUTRI LECHE" "DAN UP" "BIMBO" "PEPSI" ...
## $ Fabricante : chr "MEXILAC" "DANONE DE MEXICO" "GRUPO BIMBO" "PEPSI-COLA MEXICANA" ...
## $ Producto : chr "Nutri Leche 1 Litro" "DANUP STRAWBERRY P/BEBER 350GR NAL" "Rebanadas Bimbo 2Pz" "Pepsi N.R. 400Ml" ...
## $ Precio : num 16 14 5 8 19.5 9.5 11 9.5 23.5 12 ...
## $ Ult.Costo : num 12.3 14 5 8 15 ...
## $ Unidades : num 1 1 1 1 1 1 1 1 1 1 ...
## $ F.Ticket : int 1 2 3 3 4 4 4 4 4 5 ...
## $ NombreDepartamento: chr "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
## $ NombreFamilia : chr "Lacteos y Refrigerados" "Lacteos y Refrigerados" "Pan y Tortilla" "Bebidas" ...
## $ NombreCategoria : chr "Leche" "Yogurt" "Pan Dulce Empaquetado" "Refrescos Plástico (N.R.)" ...
## $ Estado : chr "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
## $ Mts.2 : int 60 60 60 60 60 60 60 60 60 60 ...
## $ Tipo.ubicación : chr "Esquina" "Esquina" "Esquina" "Esquina" ...
## $ Giro : chr "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
## $ Hora.inicio : chr "08:00" "08:00" "08:00" "08:00" ...
## $ Hora.cierre : chr "22:00" "22:00" "22:00" "22:00" ...
head(df, 7)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU Fecha Hora
## 1 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:16:21
## 2 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:23:33
## 3 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:24:33
## 4 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:24:33
## 5 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:26:28
## 6 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:26:28
## 7 MX001 Abarrotes 7.5e+12 NA 19/06/2020 08:26:28
## Marca Fabricante
## 1 NUTRI LECHE MEXILAC
## 2 DAN UP DANONE DE MEXICO
## 3 BIMBO GRUPO BIMBO
## 4 PEPSI PEPSI-COLA MEXICANA
## 5 BLANCA NIEVES (DETERGENTE) FABRICA DE JABON LA CORONA
## 6 FLASH ALEN
## 7 VARIOS DANONE DANONE DE MEXICO
## Producto Precio Ult.Costo Unidades F.Ticket
## 1 Nutri Leche 1 Litro 16.0 12.31 1 1
## 2 DANUP STRAWBERRY P/BEBER 350GR NAL 14.0 14.00 1 2
## 3 Rebanadas Bimbo 2Pz 5.0 5.00 1 3
## 4 Pepsi N.R. 400Ml 8.0 8.00 1 3
## 5 Detergente Blanca Nieves 500G 19.5 15.00 1 4
## 6 Flash Xtra Brisa Marina 500Ml 9.5 7.31 1 4
## 7 Danone Bipack Fresa Chocoarroz 130G 11.0 11.00 1 4
## NombreDepartamento NombreFamilia NombreCategoria
## 1 Abarrotes Lacteos y Refrigerados Leche
## 2 Abarrotes Lacteos y Refrigerados Yogurt
## 3 Abarrotes Pan y Tortilla Pan Dulce Empaquetado
## 4 Abarrotes Bebidas Refrescos Plástico (N.R.)
## 5 Abarrotes Limpieza del Hogar LavanderÃa
## 6 Abarrotes Limpieza del Hogar Limpiadores LÃquidos
## 7 Abarrotes Lacteos y Refrigerados Postres Refrigerados
## Estado Mts.2 Tipo.ubicación Giro Hora.inicio Hora.cierre
## 1 Nuevo León 60 Esquina Abarrotes 08:00 22:00
## 2 Nuevo León 60 Esquina Abarrotes 08:00 22:00
## 3 Nuevo León 60 Esquina Abarrotes 08:00 22:00
## 4 Nuevo León 60 Esquina Abarrotes 08:00 22:00
## 5 Nuevo León 60 Esquina Abarrotes 08:00 22:00
## 6 Nuevo León 60 Esquina Abarrotes 08:00 22:00
## 7 Nuevo León 60 Esquina Abarrotes 08:00 22:00
tail(df)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU Fecha Hora
## 200615 MX005 Depósito 7.62e+12 NA 12/07/2020 01:08:25
## 200616 MX005 Depósito 7.62e+12 NA 23/10/2020 22:17:37
## 200617 MX005 Depósito 7.62e+12 NA 10/10/2020 20:30:20
## 200618 MX005 Depósito 7.62e+12 NA 10/10/2020 22:40:43
## 200619 MX005 Depósito 7.62e+12 NA 27/06/2020 22:30:19
## 200620 MX005 Depósito 7.62e+12 NA 26/06/2020 23:43:34
## Marca Fabricante Producto Precio
## 200615 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G 9
## 200616 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G 9
## 200617 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G 9
## 200618 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G 9
## 200619 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G 9
## 200620 TRIDENT XTRA CARE CADBURY ADAMS Trident Xtracare Freshmint 16.32G 9
## Ult.Costo Unidades F.Ticket NombreDepartamento NombreFamilia
## 200615 6.92 1 103100 Abarrotes DulcerÃa
## 200616 6.92 1 116598 Abarrotes DulcerÃa
## 200617 6.92 1 114886 Abarrotes DulcerÃa
## 200618 6.92 1 114955 Abarrotes DulcerÃa
## 200619 6.92 1 101121 Abarrotes DulcerÃa
## 200620 6.92 1 100879 Abarrotes DulcerÃa
## NombreCategoria Estado Mts.2 Tipo.ubicación Giro
## 200615 Gomas de Mazcar Quintana Roo 58 Esquina Mini súper
## 200616 Gomas de Mazcar Quintana Roo 58 Esquina Mini súper
## 200617 Gomas de Mazcar Quintana Roo 58 Esquina Mini súper
## 200618 Gomas de Mazcar Quintana Roo 58 Esquina Mini súper
## 200619 Gomas de Mazcar Quintana Roo 58 Esquina Mini súper
## 200620 Gomas de Mazcar Quintana Roo 58 Esquina Mini súper
## Hora.inicio Hora.cierre
## 200615 08:00 21:00
## 200616 08:00 21:00
## 200617 08:00 21:00
## 200618 08:00 21:00
## 200619 08:00 21:00
## 200620 08:00 21:00
Estas funciones nos permiten ver la estructura de las variables, así como los primeros y últimos registros.
tabyl(df, ï..vcClaveTienda, NombreDepartamento)
## ï..vcClaveTienda Abarrotes Bebes e Infantiles Carnes Farmacia FerreterÃa
## MX001 95410 515 1 147 245
## MX002 6590 21 0 4 10
## MX003 4026 15 0 2 8
## MX004 82234 932 0 102 114
## MX005 10014 0 0 0 0
## MercerÃa PapelerÃa Productos a Eliminar Vinos y Licores
## 28 35 3 80
## 0 0 0 4
## 0 0 0 0
## 16 32 5 20
## 0 7 0 0
Esta función construye una tabla a partir de dos variables de nuestra base de datos.
df1<-df
df1<-subset(df1,select= -c(PLU,Codigo.Barras))
summary(df1)
## ï..vcClaveTienda DescGiro Fecha Hora
## Length:200620 Length:200620 Length:200620 Length:200620
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Marca Fabricante Producto Precio
## Length:200620 Length:200620 Length:200620 Min. :-147.00
## Class :character Class :character Class :character 1st Qu.: 11.00
## Mode :character Mode :character Mode :character Median : 16.00
## Mean : 19.42
## 3rd Qu.: 25.00
## Max. :1000.00
## Ult.Costo Unidades F.Ticket NombreDepartamento
## Min. : 0.38 Min. : 0.200 Min. : 1 Length:200620
## 1st Qu.: 8.46 1st Qu.: 1.000 1st Qu.: 33967 Class :character
## Median : 12.31 Median : 1.000 Median :105996 Mode :character
## Mean : 15.31 Mean : 1.262 Mean :193994
## 3rd Qu.: 19.23 3rd Qu.: 1.000 3rd Qu.:383009
## Max. :769.23 Max. :96.000 Max. :450040
## NombreFamilia NombreCategoria Estado Mts.2
## Length:200620 Length:200620 Length:200620 Min. :47.0
## Class :character Class :character Class :character 1st Qu.:53.0
## Mode :character Mode :character Mode :character Median :60.0
## Mean :56.6
## 3rd Qu.:60.0
## Max. :62.0
## Tipo.ubicación Giro Hora.inicio Hora.cierre
## Length:200620 Length:200620 Length:200620 Length:200620
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
df2 <-df1
df2 <- df2[df2$Precio>0,]
summary(df2)
## ï..vcClaveTienda DescGiro Fecha Hora
## Length:200473 Length:200473 Length:200473 Length:200473
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Marca Fabricante Producto Precio
## Length:200473 Length:200473 Length:200473 Min. : 0.50
## Class :character Class :character Class :character 1st Qu.: 11.00
## Mode :character Mode :character Mode :character Median : 16.00
## Mean : 19.45
## 3rd Qu.: 25.00
## Max. :1000.00
## Ult.Costo Unidades F.Ticket NombreDepartamento
## Min. : 0.38 Min. : 0.200 Min. : 1 Length:200473
## 1st Qu.: 8.46 1st Qu.: 1.000 1st Qu.: 33978 Class :character
## Median : 12.31 Median : 1.000 Median :106035 Mode :character
## Mean : 15.31 Mean : 1.261 Mean :194101
## 3rd Qu.: 19.23 3rd Qu.: 1.000 3rd Qu.:383065
## Max. :769.23 Max. :96.000 Max. :450040
## NombreFamilia NombreCategoria Estado Mts.2
## Length:200473 Length:200473 Length:200473 Min. :47.0
## Class :character Class :character Class :character 1st Qu.:53.0
## Mode :character Mode :character Mode :character Median :60.0
## Mean :56.6
## 3rd Qu.:60.0
## Max. :62.0
## Tipo.ubicación Giro Hora.inicio Hora.cierre
## Length:200473 Length:200473 Length:200473 Length:200473
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
#Esto no se utilizara puesto que utilizaremos los valores negativos como absolutos.
df1[duplicated(df1),]
## [1] ï..vcClaveTienda DescGiro Fecha Hora
## [5] Marca Fabricante Producto Precio
## [9] Ult.Costo Unidades F.Ticket NombreDepartamento
## [13] NombreFamilia NombreCategoria Estado Mts.2
## [17] Tipo.ubicación Giro Hora.inicio Hora.cierre
## <0 rows> (or 0-length row.names)
sum(duplicated(df1))
## [1] 0
df3<-df1
df3<-distinct(df3)
df4<-df3
df4$Precio<-abs(df4$Precio)
unique(df4$Precio)
## [1] 16.00 14.00 5.00 8.00 19.50 9.50 11.00 23.50 12.00
## [10] 27.00 33.00 13.00 6.00 20.00 21.00 44.00 10.00 12.50
## [19] 14.50 49.00 29.00 10.50 28.00 9.00 32.00 34.00 18.00
## [28] 37.00 3.50 35.00 22.50 2.00 24.00 22.00 7.00 1.50
## [37] 25.00 19.00 39.00 115.00 30.50 31.50 6.50 36.00 16.50
## [46] 26.00 11.50 4.00 63.00 4.50 60.00 58.00 40.50 15.00
## [55] 17.00 30.00 50.00 56.00 13.50 3.00 40.00 15.50 20.50
## [64] 23.00 260.00 29.50 36.50 18.50 21.50 5.50 68.00 53.00
## [73] 27.50 38.00 41.00 47.00 45.00 28.50 7.50 48.00 38.50
## [82] 1.00 65.00 17.50 8.50 31.00 43.00 55.00 26.50 25.50
## [91] 33.50 135.50 130.00 24.50 35.50 110.00 75.00 2.50 34.50
## [100] 69.00 57.00 76.00 39.50 113.00 81.00 125.00 50.50 55.50
## [109] 73.00 32.50 53.50 147.00 70.00 200.00 64.50 43.50 80.00
## [118] 105.00 54.00 140.00 42.00 100.00 61.00 37.50 250.00 1000.00
## [127] 74.00 52.00 135.00 129.00 148.00 66.00 126.00 59.00 145.00
## [136] 0.50 44.50 134.50 72.00 170.00 47.50 42.50 85.00 120.00
## [145] 46.00 12.90 14.17 175.00 122.00 108.00 173.50 51.00 46.50
## [154] 134.00 150.00 197.00 98.00 90.00 116.00 103.00 62.00 77.00
## [163] 155.00 67.00
df5<-df4
df5$Unidades<-ceiling(df5$Unidades)
unique(df5$Unidades)
## [1] 1 2 3 5 14 6 4 15 10 11 25 12 18 9 20 8 7 24 61 16 50 60 48 36 13
## [26] 46 80 44 40 17 26 22 23 32 33 72 56 30 37 29 96 27
df6<-df5
df6$Fecha<-as.Date(df6$Fecha, format = "%d/%m/%Y")
tibble(df6)
## # A tibble: 200,620 x 20
## ï..vcClaveTienda DescGiro Fecha Hora Marca Fabricante Producto Precio
## <chr> <chr> <date> <chr> <chr> <chr> <chr> <dbl>
## 1 MX001 Abarrotes 2020-06-19 08:16~ NUTR~ MEXILAC Nutri L~ 16
## 2 MX001 Abarrotes 2020-06-19 08:23~ DAN ~ DANONE DE~ DANUP S~ 14
## 3 MX001 Abarrotes 2020-06-19 08:24~ BIMBO GRUPO BIM~ Rebanad~ 5
## 4 MX001 Abarrotes 2020-06-19 08:24~ PEPSI PEPSI-COL~ Pepsi N~ 8
## 5 MX001 Abarrotes 2020-06-19 08:26~ BLAN~ FABRICA D~ Deterge~ 19.5
## 6 MX001 Abarrotes 2020-06-19 08:26~ FLASH ALEN Flash X~ 9.5
## 7 MX001 Abarrotes 2020-06-19 08:26~ VARI~ DANONE DE~ Danone ~ 11
## 8 MX001 Abarrotes 2020-06-19 08:26~ ZOTE FABRICA D~ Jabon Z~ 9.5
## 9 MX001 Abarrotes 2020-06-19 08:26~ ALWA~ PROCTER &~ T Femen~ 23.5
## 10 MX001 Abarrotes 2020-06-19 15:24~ JUMEX JUMEX Jugo De~ 12
## # ... with 200,610 more rows, and 12 more variables: Ult.Costo <dbl>,
## # Unidades <dbl>, F.Ticket <int>, NombreDepartamento <chr>,
## # NombreFamilia <chr>, NombreCategoria <chr>, Estado <chr>, Mts.2 <int>,
## # Tipo.ubicación <chr>, Giro <chr>, Hora.inicio <chr>, Hora.cierre <chr>
df7<-df6
df7$Hora<-substr(df7$Hora, start=1,stop=2)
tibble(df7)
## # A tibble: 200,620 x 20
## ï..vcClaveTienda DescGiro Fecha Hora Marca Fabricante Producto Precio
## <chr> <chr> <date> <chr> <chr> <chr> <chr> <dbl>
## 1 MX001 Abarrotes 2020-06-19 08 NUTRI~ MEXILAC Nutri L~ 16
## 2 MX001 Abarrotes 2020-06-19 08 DAN UP DANONE DE~ DANUP S~ 14
## 3 MX001 Abarrotes 2020-06-19 08 BIMBO GRUPO BIM~ Rebanad~ 5
## 4 MX001 Abarrotes 2020-06-19 08 PEPSI PEPSI-COL~ Pepsi N~ 8
## 5 MX001 Abarrotes 2020-06-19 08 BLANC~ FABRICA D~ Deterge~ 19.5
## 6 MX001 Abarrotes 2020-06-19 08 FLASH ALEN Flash X~ 9.5
## 7 MX001 Abarrotes 2020-06-19 08 VARIO~ DANONE DE~ Danone ~ 11
## 8 MX001 Abarrotes 2020-06-19 08 ZOTE FABRICA D~ Jabon Z~ 9.5
## 9 MX001 Abarrotes 2020-06-19 08 ALWAYS PROCTER &~ T Femen~ 23.5
## 10 MX001 Abarrotes 2020-06-19 15 JUMEX JUMEX Jugo De~ 12
## # ... with 200,610 more rows, and 12 more variables: Ult.Costo <dbl>,
## # Unidades <dbl>, F.Ticket <int>, NombreDepartamento <chr>,
## # NombreFamilia <chr>, NombreCategoria <chr>, Estado <chr>, Mts.2 <int>,
## # Tipo.ubicación <chr>, Giro <chr>, Hora.inicio <chr>, Hora.cierre <chr>
df7$Hora<- as.integer(df7$Hora)
str(df7)
## 'data.frame': 200620 obs. of 20 variables:
## $ ï..vcClaveTienda : chr "MX001" "MX001" "MX001" "MX001" ...
## $ DescGiro : chr "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
## $ Fecha : Date, format: "2020-06-19" "2020-06-19" ...
## $ Hora : int 8 8 8 8 8 8 8 8 8 15 ...
## $ Marca : chr "NUTRI LECHE" "DAN UP" "BIMBO" "PEPSI" ...
## $ Fabricante : chr "MEXILAC" "DANONE DE MEXICO" "GRUPO BIMBO" "PEPSI-COLA MEXICANA" ...
## $ Producto : chr "Nutri Leche 1 Litro" "DANUP STRAWBERRY P/BEBER 350GR NAL" "Rebanadas Bimbo 2Pz" "Pepsi N.R. 400Ml" ...
## $ Precio : num 16 14 5 8 19.5 9.5 11 9.5 23.5 12 ...
## $ Ult.Costo : num 12.3 14 5 8 15 ...
## $ Unidades : num 1 1 1 1 1 1 1 1 1 1 ...
## $ F.Ticket : int 1 2 3 3 4 4 4 4 4 5 ...
## $ NombreDepartamento: chr "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
## $ NombreFamilia : chr "Lacteos y Refrigerados" "Lacteos y Refrigerados" "Pan y Tortilla" "Bebidas" ...
## $ NombreCategoria : chr "Leche" "Yogurt" "Pan Dulce Empaquetado" "Refrescos Plástico (N.R.)" ...
## $ Estado : chr "Nuevo León" "Nuevo León" "Nuevo León" "Nuevo León" ...
## $ Mts.2 : int 60 60 60 60 60 60 60 60 60 60 ...
## $ Tipo.ubicación : chr "Esquina" "Esquina" "Esquina" "Esquina" ...
## $ Giro : chr "Abarrotes" "Abarrotes" "Abarrotes" "Abarrotes" ...
## $ Hora.inicio : chr "08:00" "08:00" "08:00" "08:00" ...
## $ Hora.cierre : chr "22:00" "22:00" "22:00" "22:00" ...
sum(is.na(df7))
## [1] 0
sum(is.na(df))
## [1] 199183
Aquí estamos calculando los NA’s del primer df, y de df7, ya que la primera si tiene la columna PLU que contiene muchos NA’s y la segunda ya no tiene esta columna.
sapply(df7, function(x) sum(is.na(x)))
## ï..vcClaveTienda DescGiro Fecha Hora
## 0 0 0 0
## Marca Fabricante Producto Precio
## 0 0 0 0
## Ult.Costo Unidades F.Ticket NombreDepartamento
## 0 0 0 0
## NombreFamilia NombreCategoria Estado Mts.2
## 0 0 0 0
## Tipo.ubicación Giro Hora.inicio Hora.cierre
## 0 0 0 0
sapply(df, function(x) sum(is.na(x)))
## ï..vcClaveTienda DescGiro Codigo.Barras PLU
## 0 0 0 199183
## Fecha Hora Marca Fabricante
## 0 0 0 0
## Producto Precio Ult.Costo Unidades
## 0 0 0 0
## F.Ticket NombreDepartamento NombreFamilia NombreCategoria
## 0 0 0 0
## Estado Mts.2 Tipo.ubicación Giro
## 0 0 0 0
## Hora.inicio Hora.cierre
## 0 0
df8<-df
df8<-na.omit(df8)
summary(df8)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU
## Length:1437 Length:1437 Min. :6.750e+08 Min. : 1.000
## Class :character Class :character 1st Qu.:6.750e+08 1st Qu.: 1.000
## Mode :character Mode :character Median :6.750e+08 Median : 1.000
## Mean :2.616e+11 Mean : 2.112
## 3rd Qu.:6.750e+08 3rd Qu.: 1.000
## Max. :7.500e+12 Max. :30.000
## Fecha Hora Marca Fabricante
## Length:1437 Length:1437 Length:1437 Length:1437
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Producto Precio Ult.Costo Unidades
## Length:1437 Min. :30.00 Min. : 1.00 Min. :1.000
## Class :character 1st Qu.:90.00 1st Qu.:64.62 1st Qu.:1.000
## Mode :character Median :90.00 Median :64.62 Median :1.000
## Mean :87.94 Mean :56.65 Mean :1.124
## 3rd Qu.:90.00 3rd Qu.:64.62 3rd Qu.:1.000
## Max. :90.00 Max. :64.62 Max. :7.000
## F.Ticket NombreDepartamento NombreFamilia NombreCategoria
## Min. : 772 Length:1437 Length:1437 Length:1437
## 1st Qu.: 99955 Class :character Class :character Class :character
## Median :102493 Mode :character Mode :character Mode :character
## Mean :100595
## 3rd Qu.:106546
## Max. :118356
## Estado Mts.2 Tipo.ubicación Giro
## Length:1437 Min. :58.00 Length:1437 Length:1437
## Class :character 1st Qu.:58.00 Class :character Class :character
## Mode :character Median :58.00 Mode :character Mode :character
## Mean :58.07
## 3rd Qu.:58.00
## Max. :60.00
## Hora.inicio Hora.cierre
## Length:1437 Length:1437
## Class :character Class :character
## Mode :character Mode :character
##
##
##
df9<- df
df9[is.na(df9)]<-0
summary(df9)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU
## Length:200620 Length:200620 Min. :8.347e+05 Min. : 0.00000
## Class :character Class :character 1st Qu.:7.500e+12 1st Qu.: 0.00000
## Mode :character Mode :character Median :7.500e+12 Median : 0.00000
## Mean :5.949e+12 Mean : 0.01513
## 3rd Qu.:7.500e+12 3rd Qu.: 0.00000
## Max. :1.750e+13 Max. :30.00000
## Fecha Hora Marca Fabricante
## Length:200620 Length:200620 Length:200620 Length:200620
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Producto Precio Ult.Costo Unidades
## Length:200620 Min. :-147.00 Min. : 0.38 Min. : 0.200
## Class :character 1st Qu.: 11.00 1st Qu.: 8.46 1st Qu.: 1.000
## Mode :character Median : 16.00 Median : 12.31 Median : 1.000
## Mean : 19.42 Mean : 15.31 Mean : 1.262
## 3rd Qu.: 25.00 3rd Qu.: 19.23 3rd Qu.: 1.000
## Max. :1000.00 Max. :769.23 Max. :96.000
## F.Ticket NombreDepartamento NombreFamilia NombreCategoria
## Min. : 1 Length:200620 Length:200620 Length:200620
## 1st Qu.: 33967 Class :character Class :character Class :character
## Median :105996 Mode :character Mode :character Mode :character
## Mean :193994
## 3rd Qu.:383009
## Max. :450040
## Estado Mts.2 Tipo.ubicación Giro
## Length:200620 Min. :47.0 Length:200620 Length:200620
## Class :character 1st Qu.:53.0 Class :character Class :character
## Mode :character Median :60.0 Mode :character Mode :character
## Mean :56.6
## 3rd Qu.:60.0
## Max. :62.0
## Hora.inicio Hora.cierre
## Length:200620 Length:200620
## Class :character Class :character
## Mode :character Mode :character
##
##
##
df10<-df
df10$PLU[is.na(df10$PLU)]<-mean(df10$PLU, na.rm=TRUE)
summary(df10)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU
## Length:200620 Length:200620 Min. :8.347e+05 Min. : 1.000
## Class :character Class :character 1st Qu.:7.500e+12 1st Qu.: 2.112
## Mode :character Mode :character Median :7.500e+12 Median : 2.112
## Mean :5.949e+12 Mean : 2.112
## 3rd Qu.:7.500e+12 3rd Qu.: 2.112
## Max. :1.750e+13 Max. :30.000
## Fecha Hora Marca Fabricante
## Length:200620 Length:200620 Length:200620 Length:200620
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Producto Precio Ult.Costo Unidades
## Length:200620 Min. :-147.00 Min. : 0.38 Min. : 0.200
## Class :character 1st Qu.: 11.00 1st Qu.: 8.46 1st Qu.: 1.000
## Mode :character Median : 16.00 Median : 12.31 Median : 1.000
## Mean : 19.42 Mean : 15.31 Mean : 1.262
## 3rd Qu.: 25.00 3rd Qu.: 19.23 3rd Qu.: 1.000
## Max. :1000.00 Max. :769.23 Max. :96.000
## F.Ticket NombreDepartamento NombreFamilia NombreCategoria
## Min. : 1 Length:200620 Length:200620 Length:200620
## 1st Qu.: 33967 Class :character Class :character Class :character
## Median :105996 Mode :character Mode :character Mode :character
## Mean :193994
## 3rd Qu.:383009
## Max. :450040
## Estado Mts.2 Tipo.ubicación Giro
## Length:200620 Min. :47.0 Length:200620 Length:200620
## Class :character 1st Qu.:53.0 Class :character Class :character
## Mode :character Median :60.0 Mode :character Mode :character
## Mean :56.6
## 3rd Qu.:60.0
## Max. :62.0
## Hora.inicio Hora.cierre
## Length:200620 Length:200620
## Class :character Class :character
## Mode :character Mode :character
##
##
##
df11<-df
df11[df11<0]<-0
summary(df11)
## ï..vcClaveTienda DescGiro Codigo.Barras PLU
## Length:200620 Length:200620 Min. :8.347e+05 Min. : 1.00
## Class :character Class :character 1st Qu.:7.500e+12 1st Qu.: 1.00
## Mode :character Mode :character Median :7.500e+12 Median : 1.00
## Mean :5.949e+12 Mean : 2.11
## 3rd Qu.:7.500e+12 3rd Qu.: 1.00
## Max. :1.750e+13 Max. :30.00
## NA's :199183
## Fecha Hora Marca Fabricante
## Length:200620 Length:200620 Length:200620 Length:200620
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Producto Precio Ult.Costo Unidades
## Length:200620 Min. : 0.00 Min. : 0.38 Min. : 0.200
## Class :character 1st Qu.: 11.00 1st Qu.: 8.46 1st Qu.: 1.000
## Mode :character Median : 16.00 Median : 12.31 Median : 1.000
## Mean : 19.44 Mean : 15.31 Mean : 1.262
## 3rd Qu.: 25.00 3rd Qu.: 19.23 3rd Qu.: 1.000
## Max. :1000.00 Max. :769.23 Max. :96.000
##
## F.Ticket NombreDepartamento NombreFamilia NombreCategoria
## Min. : 1 Length:200620 Length:200620 Length:200620
## 1st Qu.: 33967 Class :character Class :character Class :character
## Median :105996 Mode :character Mode :character Mode :character
## Mean :193994
## 3rd Qu.:383009
## Max. :450040
##
## Estado Mts.2 Tipo.ubicación Giro
## Length:200620 Min. :47.0 Length:200620 Length:200620
## Class :character 1st Qu.:53.0 Class :character Class :character
## Mode :character Median :60.0 Mode :character Mode :character
## Mean :56.6
## 3rd Qu.:60.0
## Max. :62.0
##
## Hora.inicio Hora.cierre
## Length:200620 Length:200620
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
df12<-df7
boxplot(df12$Precio,horixontal=TRUE)
boxplot(df12$Unidades,horizontal=TRUE)
df12$Dia_de_la_semana<-wday(df12$Fecha)
df12$Subtotal<-df12$Precio * df12$Unidades
df12$Utilidad<-df12$Precio-df12$Ult.Costo
df13<-select(df12, Dia_de_la_semana, Subtotal,Utilidad)
head(df13)
## Dia_de_la_semana Subtotal Utilidad
## 1 6 16.0 3.69
## 2 6 14.0 0.00
## 3 6 5.0 0.00
## 4 6 8.0 0.00
## 5 6 19.5 4.50
## 6 6 9.5 2.19
df_limpia<-df12
write.csv(df_limpia,file = "abarrotes_bd_limpia.csv", row.names = FALSE)
Previo a la manipulación de una base de datos y realizar análisis, es necesario asegurar que la base de datos que se usa esté limpia y lista para manipularse. El presente trabajo brinda herramientas que permiten la limpieza de las bases de datos para poder manipularlas y analizarlas sin encontrarnos con errores o dificultades en el análisis.