
#Análisis de las ventas de abarrotes
#Una empresa con 5 tiendas en el país solicita un análisis de sus
ventas # de abarrotes entre mayo y noviembre de 2020
#Paso 0. Instalar paquetes y llamar librerías
#install.packages("dplyr")
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
#install.packages("tidyverse")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.4
## ✔ ggplot2 3.4.1 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.0
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
#install.packages("janitor")
library(janitor)
##
## Attaching package: 'janitor'
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
#install.packages("lubridate")
library(lubridate)
#Paso 1. Importar base de datos
#file.choose()
#bd<- read.csv("C:\\Users\\User-1\\Downloads\\TEC 4TO\\Nueva carpeta\\abarrotes.csv")
#Paso 2. Entender la base de datos
#summary(bd)
#count(bd,vcClaveTienda, sort=TRUE)
#count(bd,DescGiro, sort=TRUE)
#count(bd,Marca, sort=TRUE)
#count(bd,Fabricante, sort=TRUE)
#count(bd,Producto, sort=TRUE)
#count(bd,NombreDepartamento, sort=TRUE)
#count(bd,NombreFamilia, sort=TRUE)
#count(bd,NombreCategoria, sort=TRUE)
#count(bd,Estado, sort=TRUE)
#count(bd,Tipo.ubicación, sort=TRUE)
#count(bd,Giro, sort=TRUE)
#tibble(bd)
#head(bd)
#tail(bd, n=7)
#?tail
#tabyl(bd, vcClaveTienda, NombreDepartamento)
#tabyl(bd, NombreFamilia, vcClaveTienda)
#Hallazgos # 1.Fecha sy las horas están en formato de caracter #
2.Precios negativos # 3.Falta de columna de ventas
#Paso 3. Limpiar la base de datos
#Existen 6 técnicas apra limpiar la base de datos
#Técnica 1. Remover valores irrelevantes
#Eliminar columnas
#bd1<-bd
#bd1<- subset(bd1, select =-c(PLU, Codigo.Barras))
#Eliminar renglones
#bd2<- bd1
#bd2<- bd2[bd2$Precio>0,]
#summary(bd2)
#Técnica 2. Remover valores duplicados
#¿Cuántos renglones duplicados tenemos?
#bd2[duplicated(bd2),]
#sum(duplicated(bd2))
#Eliminar renglones duplicados
#bd3<- bd2
#bd3<- distinct(bd3)
#summary(bd3)
#Técnica 3. Resolver errores tipográficos y similares
#Precios en absoluto
#bd4<-bd1
#bd4$Precio <- abs(bd4$Precio)
#summary(bd4)
#Unidades en enteros
#bd5 <- bd4
#bd5$Unidades <- ceiling (bd5$Unidades)
#summary(bd5)
#Técnica 4, Convertir los tipos de datos
#Convertir de caracter fecha
#bd6 <- bd3
#bd6$Fecha <- as.Date (bd6$Fecha, format= "%d/%m/%Y")
#Convertir de caracter a entero
#bd7<- bd6
#bd7$Hora <- substr(bd7$Hora, start=1, stop=2)
#tibble(bd7)
#bd7$Hora <- as.integer(bd7$Hora)
#str(bd7)
#Técnica 5. Tratarvalores faltantes (NA)
#¿Cuantos Na tengo en la base de datos?
#sum(is.na(bd7))
#sum(is.na(bd))
#¿Cuantos NA tengo por variable?
#sapply(bd,function(x) sum (is.na(x)))
#Borrar todos los registros NA de una tabla
#bd8<- bd
#bd8<- na.omit(bd8)
#summary(bd8)
#Reemplazar los NA con CEROS
#bd9<- bd
#bd9[is.na(bd9)]<-0
#summary(bd9)
#Reemplazar los NA con el promedio
#bd10<- bd
#bd10$PLU[is.na(bd10$PLU)] <- mean(bd10$PLU, na.rm=TRUE)
#summary(bd10)
#Técnica 6. Verificar datos con métodos estadísticos
#Datos atípicos
#bd11<- bd7
#boxplot(bd11$Precio, horizontal=TRUE)
#boxplot(bd11$Unidades, horizontal=TRUE)
#Paso 4. Manipulacion de base de datos
#Agregar columnas
#bd11$diadelasemana <- wday(bd11$Fecha)
#summary (bd11)
#bd11$subtotal <- bd11$Precio*bd11$Unidades
#summary(bd11)
#Paso 5. Exportar base de datos limpia
#bd_limpia <- bd11
#write.csv(bd_limpia, file="Abarrotes_bdlimpia.csv", row.names= FALSE)
LS0tDQp0aXRsZTogIkFiYXJyb3RlcyINCmF1dGhvcjogIkx1aXMgQWRyaWFuIE1lbmRvemEgUmR6Ig0KZGF0ZTogIjIwMjMtMDMtMTgiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUcnVlDQogICAgdG9jX2Zsb2F0OiBUcnVlDQogICAgY29kZV9kb3dubG9hZDogVHJ1ZQ0KDQotLS0NCiFbXShodHRwczovL2ltYWdlcy5zZWd1bmRhbWFuby5teC9hcGkvdjEvc21teC9pbWFnZXMvOTQvOTQyODYwOTQ2OS5qcGc/cnVsZT13ZWJwX3dlYl9nYWxsZXJ5XzN4KQ0KDQojQW7DoWxpc2lzIGRlIGxhcyB2ZW50YXMgZGUgYWJhcnJvdGVzDQoNCiNVbmEgZW1wcmVzYSBjb24gNSB0aWVuZGFzIGVuIGVsIHBhw61zIHNvbGljaXRhIHVuIGFuw6FsaXNpcyBkZSBzdXMgdmVudGFzDQojIGRlIGFiYXJyb3RlcyBlbnRyZSBtYXlvIHkgbm92aWVtYnJlIGRlIDIwMjANCg0KI1Bhc28gMC4gSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hcw0KYGBge3J9DQojaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQ0KbGlicmFyeShkcGx5cikNCiNpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQojaW5zdGFsbC5wYWNrYWdlcygiamFuaXRvciIpDQpsaWJyYXJ5KGphbml0b3IpDQojaW5zdGFsbC5wYWNrYWdlcygibHVicmlkYXRlIikNCmxpYnJhcnkobHVicmlkYXRlKQ0KYGBgDQoNCiNQYXNvIDEuIEltcG9ydGFyIGJhc2UgZGUgZGF0b3MNCmBgYHtyfQ0KI2ZpbGUuY2hvb3NlKCkNCiNiZDwtIHJlYWQuY3N2KCJDOlxcVXNlcnNcXFVzZXItMVxcRG93bmxvYWRzXFxURUMgNFRPXFxOdWV2YSBjYXJwZXRhXFxhYmFycm90ZXMuY3N2IikNCmBgYA0KDQojUGFzbyAyLiBFbnRlbmRlciBsYSBiYXNlIGRlIGRhdG9zDQpgYGB7cn0NCiNzdW1tYXJ5KGJkKQ0KDQojY291bnQoYmQsdmNDbGF2ZVRpZW5kYSwgc29ydD1UUlVFKQ0KI2NvdW50KGJkLERlc2NHaXJvLCBzb3J0PVRSVUUpDQojY291bnQoYmQsTWFyY2EsIHNvcnQ9VFJVRSkNCiNjb3VudChiZCxGYWJyaWNhbnRlLCBzb3J0PVRSVUUpDQojY291bnQoYmQsUHJvZHVjdG8sIHNvcnQ9VFJVRSkNCiNjb3VudChiZCxOb21icmVEZXBhcnRhbWVudG8sIHNvcnQ9VFJVRSkNCiNjb3VudChiZCxOb21icmVGYW1pbGlhLCBzb3J0PVRSVUUpDQojY291bnQoYmQsTm9tYnJlQ2F0ZWdvcmlhLCBzb3J0PVRSVUUpDQojY291bnQoYmQsRXN0YWRvLCBzb3J0PVRSVUUpDQojY291bnQoYmQsVGlwby51YmljYWNpw7NuLCBzb3J0PVRSVUUpDQojY291bnQoYmQsR2lybywgc29ydD1UUlVFKQ0KDQojdGliYmxlKGJkKQ0KDQojaGVhZChiZCkNCg0KI3RhaWwoYmQsIG49NykNCiM/dGFpbA0KDQojdGFieWwoYmQsIHZjQ2xhdmVUaWVuZGEsIE5vbWJyZURlcGFydGFtZW50bykNCiN0YWJ5bChiZCwgTm9tYnJlRmFtaWxpYSwgdmNDbGF2ZVRpZW5kYSkNCmBgYA0KDQoNCiNIYWxsYXpnb3MNCiMgMS5GZWNoYSBzeSBsYXMgaG9yYXMgZXN0w6FuIGVuIGZvcm1hdG8gZGUgY2FyYWN0ZXINCiMgMi5QcmVjaW9zIG5lZ2F0aXZvcw0KIyAzLkZhbHRhIGRlIGNvbHVtbmEgZGUgdmVudGFzDQoNCiNQYXNvIDMuIExpbXBpYXIgbGEgYmFzZSBkZSBkYXRvcyANCg0KI0V4aXN0ZW4gNiB0w6ljbmljYXMgYXByYSBsaW1waWFyIGxhIGJhc2UgZGUgZGF0b3MNCg0KI1TDqWNuaWNhIDEuIFJlbW92ZXIgdmFsb3JlcyBpcnJlbGV2YW50ZXMNCmBgYHtyfQ0KICAjRWxpbWluYXIgY29sdW1uYXMNCiAgI2JkMTwtYmQNCiAgI2JkMTwtIHN1YnNldChiZDEsIHNlbGVjdCA9LWMoUExVLCBDb2RpZ28uQmFycmFzKSkNCiAgDQogICNFbGltaW5hciByZW5nbG9uZXMNCiAgI2JkMjwtIGJkMQ0KICAjYmQyPC0gYmQyW2JkMiRQcmVjaW8+MCxdDQogICNzdW1tYXJ5KGJkMikNCiAgDQpgYGANCg0KI1TDqWNuaWNhIDIuIFJlbW92ZXIgdmFsb3JlcyBkdXBsaWNhZG9zDQpgYGB7cn0NCiANCiAgI8K/Q3XDoW50b3MgcmVuZ2xvbmVzIGR1cGxpY2Fkb3MgdGVuZW1vcz8NCiAgI2JkMltkdXBsaWNhdGVkKGJkMiksXQ0KICAjc3VtKGR1cGxpY2F0ZWQoYmQyKSkNCiAgDQogICNFbGltaW5hciByZW5nbG9uZXMgZHVwbGljYWRvcw0KICAjYmQzPC0gYmQyDQogICNiZDM8LSBkaXN0aW5jdChiZDMpDQogICNzdW1tYXJ5KGJkMykNCmBgYA0KIA0KICANCiNUw6ljbmljYSAzLiBSZXNvbHZlciBlcnJvcmVzIHRpcG9ncsOhZmljb3MgeSBzaW1pbGFyZXMNCmBgYHtyfQ0KICANCiAgI1ByZWNpb3MgZW4gYWJzb2x1dG8NCiAgI2JkNDwtYmQxDQogICNiZDQkUHJlY2lvIDwtIGFicyhiZDQkUHJlY2lvKQ0KICAjc3VtbWFyeShiZDQpDQogIA0KICAjVW5pZGFkZXMgZW4gZW50ZXJvcw0KICAjYmQ1IDwtIGJkNA0KICAjYmQ1JFVuaWRhZGVzIDwtIGNlaWxpbmcgKGJkNSRVbmlkYWRlcykNCiAgI3N1bW1hcnkoYmQ1KQ0KYGBgDQoNCiNUw6ljbmljYSA0LCBDb252ZXJ0aXIgbG9zIHRpcG9zIGRlIGRhdG9zDQpgYGB7cn0NCiAgI0NvbnZlcnRpciBkZSBjYXJhY3RlciBmZWNoYQ0KICAjYmQ2IDwtIGJkMw0KICAjYmQ2JEZlY2hhIDwtIGFzLkRhdGUgKGJkNiRGZWNoYSwgZm9ybWF0PSAiJWQvJW0vJVkiKQ0KDQogICNDb252ZXJ0aXIgZGUgY2FyYWN0ZXIgYSBlbnRlcm8NCiAgI2JkNzwtIGJkNg0KICAjYmQ3JEhvcmEgPC0gc3Vic3RyKGJkNyRIb3JhLCBzdGFydD0xLCBzdG9wPTIpDQogICN0aWJibGUoYmQ3KQ0KICAjYmQ3JEhvcmEgPC0gYXMuaW50ZWdlcihiZDckSG9yYSkgIA0KICAjc3RyKGJkNykNCiAgDQoNCmBgYA0KI1TDqWNuaWNhIDUuIFRyYXRhcnZhbG9yZXMgZmFsdGFudGVzIChOQSkNCmBgYHtyfQ0KICANCiAgI8K/Q3VhbnRvcyBOYSB0ZW5nbyBlbiBsYSBiYXNlIGRlIGRhdG9zPw0KICAjc3VtKGlzLm5hKGJkNykpDQogICNzdW0oaXMubmEoYmQpKQ0KICANCiAgI8K/Q3VhbnRvcyBOQSB0ZW5nbyBwb3IgdmFyaWFibGU/DQogICNzYXBwbHkoYmQsZnVuY3Rpb24oeCkgc3VtIChpcy5uYSh4KSkpDQogIA0KICAjQm9ycmFyIHRvZG9zIGxvcyByZWdpc3Ryb3MgTkEgZGUgdW5hIHRhYmxhDQogICNiZDg8LSBiZA0KICAjYmQ4PC0gbmEub21pdChiZDgpDQogICNzdW1tYXJ5KGJkOCkNCiAgDQogICNSZWVtcGxhemFyIGxvcyBOQSBjb24gQ0VST1MNCiAgI2JkOTwtIGJkDQogICNiZDlbaXMubmEoYmQ5KV08LTANCiAgI3N1bW1hcnkoYmQ5KQ0KICANCiAgI1JlZW1wbGF6YXIgbG9zIE5BIGNvbiBlbCBwcm9tZWRpbw0KICAjYmQxMDwtIGJkDQogICNiZDEwJFBMVVtpcy5uYShiZDEwJFBMVSldIDwtIG1lYW4oYmQxMCRQTFUsIG5hLnJtPVRSVUUpDQogICNzdW1tYXJ5KGJkMTApDQpgYGANCg0KI1TDqWNuaWNhIDYuIFZlcmlmaWNhciBkYXRvcyBjb24gbcOpdG9kb3MgZXN0YWTDrXN0aWNvcw0KYGBge3J9DQogICNEYXRvcyBhdMOtcGljb3MNCiAgI2JkMTE8LSBiZDcNCiAgI2JveHBsb3QoYmQxMSRQcmVjaW8sIGhvcml6b250YWw9VFJVRSkNCiAgI2JveHBsb3QoYmQxMSRVbmlkYWRlcywgaG9yaXpvbnRhbD1UUlVFKQ0KICANCmBgYA0KICANCiNQYXNvIDQuIE1hbmlwdWxhY2lvbiBkZSBiYXNlIGRlIGRhdG9zDQogIA0KI0FncmVnYXIgY29sdW1uYXMNCmBgYHtyfQ0KI2JkMTEkZGlhZGVsYXNlbWFuYSA8LSB3ZGF5KGJkMTEkRmVjaGEpICANCiNzdW1tYXJ5IChiZDExKQ0KDQojYmQxMSRzdWJ0b3RhbCA8LSBiZDExJFByZWNpbypiZDExJFVuaWRhZGVzDQojc3VtbWFyeShiZDExKQ0KYGBgDQoNCg0KI1Bhc28gNS4gRXhwb3J0YXIgYmFzZSBkZSBkYXRvcyBsaW1waWENCmBgYHtyfQ0KI2JkX2xpbXBpYSA8LSBiZDExDQojd3JpdGUuY3N2KGJkX2xpbXBpYSwgZmlsZT0iQWJhcnJvdGVzX2JkbGltcGlhLmNzdiIsIHJvdy5uYW1lcz0gRkFMU0UpDQoNCg0KYGBgDQoNCg==