library(readr) # Para leer datos
library(lubridate) # Para fechas y Times
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
##
## date
library(anytime) # Para fechas y Times
library(dplyr) # Para filters(), select(),...mutate(), arrange()...
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:lubridate':
##
## intersect, setdiff, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
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()
## )
ventas <- as.data.frame(ventas) # Es un data frame
head(ventas) # los primeros seis registros
## Folio Hora Total Pago Cajero
## 1 LBVT18010004435 01/05/2018 12:36 1121.20 1121.20 MAYTE
## 2 LBVT18010004436 01/05/2018 12:37 18.50 20.00 MAYTE
## 3 LBVT18010004437 01/05/2018 12:38 160.00 200.00 MAYTE
## 4 LBVT18010004438 01/05/2018 12:47 397.50 397.50 MAYTE
## 5 LBVT18010004439 01/05/2018 12:48 22.00 50.00 MAYTE
## 6 LBVT18010004440 01/05/2018 12:53 1314.19 1314.19 MAYTE
tail(ventas) # los últimos seis registros
## Folio Hora Total Pago Cajero
## 84876 LBVT18070002268 31/08/2018 16:58 43.80 50.00 JAQUELINE
## 84877 LBVT18070002269 31/08/2018 17:03 16.32 16.32 JAQUELINE
## 84878 LBVT18070002270 31/08/2018 17:04 28.32 28.32 JAQUELINE
## 84879 LBVT18070002271 31/08/2018 17:06 21.36 50.00 JAQUELINE
## 84880 LBVT18070002272 31/08/2018 17:27 50.00 50.00 JAQUELINE
## 84881 LBVT18070002273 31/08/2018 17:36 30.14 50.00 JAQUELINE
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
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"
ventas <- mutate(ventas, agnio = fagnio, mes = fmes, dia = fdia, hora=fhora, minuto=fminuto, fechahora = fecha.y.hora)
head(ventas)
## Folio Hora Total Pago Cajero agnio mes dia hora
## 1 LBVT18010004435 01/05/2018 12:36 1121.20 1121.20 MAYTE 2018 5 1 12
## 2 LBVT18010004436 01/05/2018 12:37 18.50 20.00 MAYTE 2018 5 1 12
## 3 LBVT18010004437 01/05/2018 12:38 160.00 200.00 MAYTE 2018 5 1 12
## 4 LBVT18010004438 01/05/2018 12:47 397.50 397.50 MAYTE 2018 5 1 12
## 5 LBVT18010004439 01/05/2018 12:48 22.00 50.00 MAYTE 2018 5 1 12
## 6 LBVT18010004440 01/05/2018 12:53 1314.19 1314.19 MAYTE 2018 5 1 12
## minuto fechahora
## 1 36 2018-05-01 12:36:00
## 2 37 2018-05-01 12:37:00
## 3 38 2018-05-01 12:38:00
## 4 47 2018-05-01 12:47:00
## 5 48 2018-05-01 12:48:00
## 6 53 2018-05-01 12:53:00
ventas <- arrange(ventas, fechahora)
head(ventas)
## Folio Hora Total Pago Cajero agnio mes dia hora
## 1 LBVT18020018825 01/05/2018 07:46 88.85 100 ALE HUERTA 2018 5 1 7
## 2 LBVT18020018826 01/05/2018 07:53 183.75 200 ALE HUERTA 2018 5 1 7
## 3 LBVT18020018827 01/05/2018 07:58 497.18 500 ALE HUERTA 2018 5 1 7
## 4 LBVT18020018828 01/05/2018 08:13 11.50 12 ALE HUERTA 2018 5 1 8
## 5 LBVT18020018829 01/05/2018 08:14 200.00 200 ALE HUERTA 2018 5 1 8
## 6 LBVT18020018830 01/05/2018 08:16 177.20 500 ALE HUERTA 2018 5 1 8
## minuto fechahora
## 1 46 2018-05-01 07:46:00
## 2 53 2018-05-01 07:53:00
## 3 58 2018-05-01 07:58:00
## 4 13 2018-05-01 08:13:00
## 5 14 2018-05-01 08:14:00
## 6 16 2018-05-01 08:16:00
tail(ventas)
## Folio Hora Total Pago Cajero agnio mes dia
## 84876 LBVT18020048670 31/08/2018 20:59 112.50 120.00 ROSI MEJIA 2018 8 31
## 84877 LBVT18020048671 31/08/2018 21:03 344.80 345.00 ROSI MEJIA 2018 8 31
## 84878 LBVT18020048672 31/08/2018 21:06 154.80 205.00 ROSI MEJIA 2018 8 31
## 84879 LBVT18030071088 31/08/2018 21:06 585.65 585.65 ALE HUERTA 2018 8 31
## 84880 LBVT18030071089 31/08/2018 21:07 112.70 112.70 ALE HUERTA 2018 8 31
## 84881 LBVT18030071090 31/08/2018 21:13 162.70 162.70 ALE HUERTA 2018 8 31
## hora minuto fechahora
## 84876 20 59 2018-08-31 20:59:00
## 84877 21 3 2018-08-31 21:03:00
## 84878 21 6 2018-08-31 21:06:00
## 84879 21 6 2018-08-31 21:06:00
## 84880 21 7 2018-08-31 21:07:00
## 84881 21 13 2018-08-31 21:13:00
totalespormes <- data.frame(ventas %>%
group_by(month(fechahora)) %>%
summarize(frec = n(), total = sum(Total)))
totalespormes
## month.fechahora. frec total
## 1 5 20348 3748978
## 2 6 19838 3749558
## 3 7 21607 4197541
## 4 8 23088 4412733
barplot(totalespormes$frec, names.arg = month.name[5:8])
barplot(totalespormes$total, names.arg = month.name[5:8])
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
barplot(totalesporcajero$frec, names.arg = totalesporcajero$Cajero)
Se limpia y se empieza a estraer los valores para el año asi como para dia y mes, hora y fecha con la función as.numeric() y asignarla a una nueva variable
Agrupar cada variable de la fecha en una nueva de tipo Date con la función make_datetime()
Transformamos la variable Hora para generar nuevas variables en ventas con la función mutate()
Ordenamos la ventas con la función arrange() de manera ascendente
El registro de las ventas inician con fecha: 2018-05-01 07:46:00 y terminan con fecha: 2018-08-31 21:13:00
Agrupamos el total y la frecuencia de las ventas y nos damos cuenta de que el mes con mayor cantidad de ventas es el mismo mes con mayor frecuencia de ventas, quedando de la siguiente manera las dos graficas de barras: ## 1 August ## 2 July ## 3 June ## 4 May