###Explorando y describiendo datos de ventas. Análisis del campo Hora de ventas. Se cargarán las librerías para tratar R con fechas. library(lubridate): https://rpubs.com/Maugnetic/282491 library(anytime): https://cran.r-project.org/web/packages/anytime/anytime.pdf ###Cargar las librerías *Utilizar {r warning=FALSE, message=FALSE} para que no muestre mensajes ni advertencias.
library(readr) # Para leer datos
library(lubridate) # Para fechas y Times
library(anytime) # Para fechas y Times
library(dplyr) # Para filters(), select(),...mutate(), arrange()...
###Cargar los datos En RUTA, reemplazar la ruta con su directorio de trabajo en donde se encuentre Sales.csv
ruta <- "C:/Users/memow/OneDrive/Escritorio/PracticasR"
#DEFINE LA RUTA EN DONDE ESTÁN LOS DATOS
setwd(ruta)
ventas <- read_csv("Sales.csv")
## Parsed with column specification:
## cols(
## Folio = col_character(),
## Hora = col_character(),
## Total = col_double(),
## Pago = col_double(),
## Cajero = col_character()
## )
tail(ventas) #Los últimos seis registros
## # A tibble: 6 x 5
## Folio Hora Total Pago Cajero
## <chr> <chr> <dbl> <dbl> <chr>
## 1 LBVT18070002268 31/08/2018 16:58 43.8 50 JAQUELINE
## 2 LBVT18070002269 31/08/2018 17:03 16.3 16.3 JAQUELINE
## 3 LBVT18070002270 31/08/2018 17:04 28.3 28.3 JAQUELINE
## 4 LBVT18070002271 31/08/2018 17:06 21.4 50 JAQUELINE
## 5 LBVT18070002272 31/08/2018 17:27 50 50 JAQUELINE
## 6 LBVT18070002273 31/08/2018 17:36 30.1 50 JAQUELINE
####Limpiar la variable Hora de ventas Crear con la descomposición de la variable Hora de ventas. El propósito es tener mejor control de un dato tipo date() y/o datetime(). Por medio de la función substr(), extraer los caracteres adecuados de la variabe Hora, dejar la Hora en una variable nueva llamada fechas y a partir de ésta variable extraer año, mes, dia, hora, minutos. Mediate as.numeric() convertir a formato numérico cada variable. *Se muestran con head() solo los primeros seis regisros.
fechas <- ventas$Hora
#fechas y horas con todos los caracteres
head(fechas)
## [1] "01/05/2018 12:36" "01/05/2018 12:37" "01/05/2018 12:38" "01/05/2018 12:47"
## [5] "01/05/2018 12:48" "01/05/2018 12:53"
fagnio <- as.numeric(substr(fechas, 7, 10))
head(fagnio)
## [1] 2018 2018 2018 2018 2018 2018
fmes <- as.numeric(substr(fechas, 4,5))
head(fmes)
## [1] 5 5 5 5 5 5
fdia <- as.numeric(substr(fechas, 1, 2))
head(fdia)
## [1] 1 1 1 1 1 1
fhora <- as.numeric(substr(fechas, 12, 13))
head(fhora)
## [1] 12 12 12 12 12 12
fminuto <- as.numeric(substr(fechas, 15, 16))
head(fminuto)
## [1] 36 37 38 47 48 53
#Generar el formato de fecha para su mejor tratamiento fechahora
fecha_y_hora <- make_datetime(year = fagnio,
month = fmes,
day = fdia,
hour = fhora,
min = fminuto)
head(fecha_y_hora)
## [1] "2018-05-01 12:36:00 UTC" "2018-05-01 12:37:00 UTC"
## [3] "2018-05-01 12:38:00 UTC" "2018-05-01 12:47:00 UTC"
## [5] "2018-05-01 12:48:00 UTC" "2018-05-01 12:53:00 UTC"
###Transformar la variable Hora para generear nuevas variables en ventas
ventas <- mutate(ventas, agnio = fagnio, mes = fmes, dia = fdia, hora = fhora, minuto = fminuto, fechahora = fecha_y_hora)
head(ventas)
## # A tibble: 6 x 11
## Folio Hora Total Pago Cajero agnio mes dia hora minuto
## <chr> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 LBVT~ 01/0~ 1121. 1121. MAYTE 2018 5 1 12 36
## 2 LBVT~ 01/0~ 18.5 20 MAYTE 2018 5 1 12 37
## 3 LBVT~ 01/0~ 160 200 MAYTE 2018 5 1 12 38
## 4 LBVT~ 01/0~ 398. 398. MAYTE 2018 5 1 12 47
## 5 LBVT~ 01/0~ 22 50 MAYTE 2018 5 1 12 48
## 6 LBVT~ 01/0~ 1314. 1314. MAYTE 2018 5 1 12 53
## # ... with 1 more variable: fechahora <dttm>
####Ordenar conforme las variables año, mes, día, hora, minuto ascendente. Se utiliza la variable fechahora Ver los primeros seis head() y últimos seis tail() registros ordenados.
ventas <- arrange(ventas, fechahora)
head(ventas)
## # A tibble: 6 x 11
## Folio Hora Total Pago Cajero agnio mes dia hora minuto
## <chr> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 LBVT~ 01/0~ 88.8 100 ALE H~ 2018 5 1 7 46
## 2 LBVT~ 01/0~ 184. 200 ALE H~ 2018 5 1 7 53
## 3 LBVT~ 01/0~ 497. 500 ALE H~ 2018 5 1 7 58
## 4 LBVT~ 01/0~ 11.5 12 ALE H~ 2018 5 1 8 13
## 5 LBVT~ 01/0~ 200 200 ALE H~ 2018 5 1 8 14
## 6 LBVT~ 01/0~ 177. 500 ALE H~ 2018 5 1 8 16
## # ... with 1 more variable: fechahora <dttm>
tail(ventas)
## # A tibble: 6 x 11
## Folio Hora Total Pago Cajero agnio mes dia hora minuto
## <chr> <chr> <dbl> <dbl> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 LBVT~ 31/0~ 112. 120 ROSI ~ 2018 8 31 20 59
## 2 LBVT~ 31/0~ 345. 345 ROSI ~ 2018 8 31 21 3
## 3 LBVT~ 31/0~ 155. 205 ROSI ~ 2018 8 31 21 6
## 4 LBVT~ 31/0~ 586. 586. ALE H~ 2018 8 31 21 6
## 5 LBVT~ 31/0~ 113. 113. ALE H~ 2018 8 31 21 7
## 6 LBVT~ 31/0~ 163. 163. ALE H~ 2018 8 31 21 13
## # ... with 1 more variable: fechahora <dttm>
###Interpretación de las ventas de acuerdo a fechahora Las ventas inician con fecha: 2018-05-01 07:46:00 Las ventas terminan con fecha: 2018-08-31 21:13:00 *Del 1 de Mayo del 2018 al 31 de Agosto de 2018 ###Agrupando datos por mes de ventas
totalespormes <- data.frame(ventas %>% group_by(month(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalespormes <- arrange(totalespormes, desc(total))
totalespormes
## month.fechahora. frec total
## 1 8 23088 4412733
## 2 7 21607 4197541
## 3 6 19838 3749558
## 4 5 20348 3748978
###Visualizando la frecuencia por mes de las ventas
barplot(totalespormes$frec, names.arg = month.name[5:8])
###Visualizando los totales por mes de las ventas
barplot(totalespormes$total, names.arg = month.name[5:8])
####Agrupando datos por día del mes de ventas
totalespordiam <- data.frame(ventas %>% group_by(day(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalespordiam <- arrange(totalespordiam, desc(total))
totalespordiam
## day.fechahora. frec total
## 1 19 3209 634982.2
## 2 20 3030 613940.9
## 3 5 3054 599102.4
## 4 3 2859 598909.3
## 5 1 2896 598225.3
## 6 26 3127 598143.7
## 7 12 2895 596444.3
## 8 13 2861 581453.2
## 9 27 2886 553716.7
## 10 6 2831 544872.1
## 11 17 2954 534699.1
## 12 10 2801 530426.5
## 13 29 2674 526266.7
## 14 8 2716 525955.2
## 15 15 2763 525826.6
## 16 30 2681 523042.5
## 17 4 2669 508573.0
## 18 22 2844 496941.9
## 19 7 2702 496837.3
## 20 16 2650 496319.4
## 21 18 2613 493902.0
## 22 14 2598 487313.8
## 23 21 2745 482880.4
## 24 24 2616 482324.3
## 25 11 2555 472398.8
## 26 2 2591 467214.4
## 27 9 2533 461478.3
## 28 23 2549 456681.6
## 29 25 2600 442974.2
## 30 28 2452 427454.4
## 31 31 1927 349509.3
###Visualizando la frecuencia por día del mes de las ventas
barplot(totalespordiam$frec, names.arg = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"))
###Visualizando el total por día del mes de las ventas
barplot(totalespordiam$total, names.arg = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"))
###Agrupando datos por día de ventas
totalespordia <- data.frame(ventas %>% group_by(day(fechahora),month(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalespordia <- arrange(totalespordia, desc(total))
totalespordia
## day.fechahora. month.fechahora. frec total
## 1 19 8 1414 326963.96
## 2 26 8 1224 278824.30
## 3 3 6 1035 252807.49
## 4 12 8 1043 252637.99
## 5 5 8 1043 247912.24
## 6 1 7 989 243835.81
## 7 29 7 927 228395.92
## 8 10 6 971 223796.92
## 9 13 5 924 220230.52
## 10 6 5 938 217337.92
## 11 8 7 957 217023.96
## 12 27 5 939 213355.65
## 13 17 6 1050 212959.97
## 14 20 5 882 205145.87
## 15 15 7 892 204735.35
## 16 22 7 992 202843.19
## 17 24 6 851 192391.89
## 18 20 8 921 181989.98
## 19 18 8 848 170467.92
## 20 4 8 757 163600.78
## 21 7 7 765 162076.87
## 22 11 8 757 156810.84
## 23 16 6 766 154663.79
## 24 14 7 769 151641.28
## 25 30 6 722 148591.44
## 26 30 7 724 148183.60
## 27 13 8 729 147950.50
## 28 21 8 823 146588.39
## 29 9 7 712 144720.88
## 30 5 5 755 143837.33
## 31 18 6 614 143766.56
## 32 1 5 713 143370.63
## 33 6 8 718 142928.35
## 34 21 7 771 142575.34
## 35 23 7 689 141714.37
## 36 31 7 708 141014.31
## 37 2 6 725 138920.29
## 38 2 7 695 138426.26
## 39 14 5 655 137144.68
## 40 11 6 676 136190.31
## 41 27 8 767 133035.16
## 42 12 5 664 132893.27
## 43 9 6 696 132876.78
## 44 3 8 646 132302.87
## 45 7 5 697 131037.49
## 46 20 7 672 129177.59
## 47 25 6 661 128161.26
## 48 4 6 698 128131.44
## 49 26 5 699 127044.04
## 50 25 8 758 126689.54
## 51 17 8 675 126552.56
## 52 28 7 695 126526.89
## 53 23 6 640 125776.42
## 54 30 5 623 125314.18
## 55 16 7 652 123254.66
## 56 3 7 585 121335.07
## 57 1 8 652 118464.13
## 58 15 8 617 117876.52
## 59 28 5 656 117511.66
## 60 16 8 616 116334.66
## 61 21 5 616 116272.39
## 62 31 8 648 116025.64
## 63 27 7 594 114781.94
## 64 13 7 641 114133.10
## 65 15 5 673 113642.24
## 66 12 6 583 112849.60
## 67 10 8 654 112784.25
## 68 14 8 633 109328.58
## 69 4 5 606 108690.41
## 70 7 8 651 108593.31
## 71 8 8 596 108448.50
## 72 4 7 608 108150.40
## 73 24 7 604 107923.97
## 74 19 6 576 107558.37
## 75 5 7 629 106574.61
## 76 10 7 579 105788.81
## 77 19 5 630 105103.66
## 78 25 7 598 104293.43
## 79 26 6 617 104122.30
## 80 29 6 577 103261.78
## 81 22 8 704 102463.63
## 82 16 5 616 102066.33
## 83 17 7 605 101709.63
## 84 8 5 573 101356.14
## 85 30 8 612 100953.23
## 86 5 6 627 100778.26
## 87 13 6 567 99139.10
## 88 8 6 590 99126.59
## 89 29 8 596 98687.00
## 90 2 5 585 98419.29
## 91 12 7 605 98063.45
## 92 20 6 555 97627.45
## 93 22 5 556 97580.41
## 94 6 7 615 97356.20
## 95 18 7 611 96624.15
## 96 29 5 574 95922.01
## 97 23 5 576 95648.54
## 98 9 8 551 95414.66
## 99 19 7 589 95356.26
## 100 7 6 589 95129.64
## 101 28 8 586 95104.24
## 102 22 6 592 94054.71
## 103 23 8 644 93542.30
## 104 17 5 624 93476.97
## 105 1 6 542 92554.74
## 106 27 6 586 92543.98
## 107 31 5 571 92469.37
## 108 3 5 593 92463.90
## 109 24 8 619 92008.76
## 110 2 8 586 91448.59
## 111 11 7 548 91150.47
## 112 24 5 542 89999.65
## 113 15 6 581 89572.48
## 114 14 6 541 89199.31
## 115 9 5 574 88466.00
## 116 28 6 515 88311.64
## 117 11 5 574 88247.16
## 118 26 7 587 88153.07
## 119 10 5 597 88056.56
## 120 6 6 560 87249.67
## 121 25 5 583 83829.97
## 122 18 5 540 83043.39
## 123 21 6 535 77444.26
###Visualizando la frecuencia por día de las ventas
barplot(totalespordia$frec)
###Visualizando el total por día de las ventas
barplot(totalespordia$total)
###Agrupando datos por hora de ventas
totalesporhora <- data.frame(ventas %>% group_by(hour(fechahora)) %>% summarize(frec = n(), total = sum(Total)))
totalesporhora <- arrange(totalesporhora, desc(total))
totalesporhora
## hour.fechahora. frec total
## 1 20 8540 1813265.26
## 2 19 7771 1597126.93
## 3 14 7590 1513358.72
## 4 15 7528 1499100.52
## 5 13 6743 1447631.00
## 6 16 7715 1324470.19
## 7 18 6500 1279146.00
## 8 17 6898 1226373.05
## 9 12 5570 1130093.27
## 10 11 5887 960757.34
## 11 10 5217 784896.29
## 12 9 4057 648065.07
## 13 21 1832 479069.84
## 14 8 2515 358712.15
## 15 7 518 46744.66
###Visualizando la frecuencia por hora de las ventas
barplot(totalesporhora$frec, names.arg = c("7","8","9","10","11","12","13","14","15","16","17","18","19","20","21"))
###Visualizando el total por hora de las ventas
barplot(totalesporhora$total, names.arg = c("7","8","9","10","11","12","13","14","15","16","17","18","19","20","21"))
####Totales por Cajero ###Agrupando datos por cajero de ventas Agrupar por cajero Ordenar por frecuencia
totalesporcajero <- data.frame(ventas %>% group_by(Cajero) %>% summarize(frec = n(), total = sum(Total)))
totalesporcajero <- arrange(totalesporcajero, desc(frec))
totalesporcajero
## Cajero frec total
## 1 MARICRUZ 11885 2377528.60
## 2 JUAN MARTIN 10287 2043433.47
## 3 ALE HUERTA 10215 2121820.22
## 4 FERNANDO C 10089 2051828.96
## 5 JESUS PEREZ 6739 1307989.69
## 6 MAYTE 5565 1126737.82
## 7 ROSI MEJIA 4934 1030549.23
## 8 MONSE L. 4236 383628.75
## 9 JANET 3594 681716.26
## 10 MIRIAM 3241 674795.88
## 11 GABY LUCIO 2591 555617.24
## 12 LINA 2367 496577.05
## 13 SARAHY 2103 161650.91
## 14 JAQUELINE 1792 205634.67
## 15 ALE DIAZ 1488 321807.38
## 16 EDUARDO V 1265 215377.09
## 17 MIRIAM LANDIN 906 193589.88
## 18 CLAUDIA 783 47937.92
## 19 MAGO 490 43925.29
## 20 ELI C. 188 46397.50
## 21 EDUARDO 123 20266.48
###Visualizando totales y frecuencias por cajero
barplot(totalesporcajero$frec, names.arg = totalesporcajero$Cajero)
####Interpretración personal Analizamos un conjunto de datos proveniente muy probablemente de un comercio, ya que se manejan ventas. Tenemos los campos de: Folio, Hora, Total, Pago y Cajero. Pudimos observar que los últimos seis registros de ventas fueron el 31 de Septiembre de 2018 por la cajera Jacqueline.
*Después de limpiar los datos de fecha, deduje que estos registros de ventas son de las fechas 2018-05-01 07:46:00 - 2018-08-31 21:13:00 (1 de Mayo del 2018 a 31 de Agosto de 2018). Los horarios del comercio son de 07:00-21:00.
*Mes en el que más se vendió El mes en el que más se vendió fue el mes de Agosto con $4,412,733 en 23,088 ventas.
*Mes en el que menos se vendió El mes en el que menos se vendió fue el mes de Mayo con $3,748,978 en 20,348 ventas.
*Día en el que más se vendió El día en el que más se vendió fue el 19 de Agosto del 2018 con $326,963.96 en 1,414 ventas.
*Día en el que menos se vendió El día en el que menos se vendió fue el 21 de Junio del 2018 con $77,444.26 en 535 ventas.
*Hora en la que más se vendió La hora en la que más se vendió fue a las 08:00 PM con un total de $1,813,265.26 en 8,540 ventas.
*Hora en la que menos se vendió La hora en la que menos se vendió fue a las 07:00 AM con un total de $46,744.66 en 518 ventas.
*Cajero que más vendió La cajera que más vendió fue Maricruz con un total de $2,377,528 en 11,855 ventas.
*Cajero que menos vendió El cajero que menos vendió fue Eduardo con un total de $20,266.48 en 123 ventas.