#Paso 0. Instalar paquetes y llamar librerias install.packages(“dplyr”) library(dplyr) install.packages(“tidyverse”) library(tidyverse) install.packages(“janitor”) library(janitor) install.packages(“lubridate”) library(lubridate) install.packages(“stats”) library(stats)

#Paso 1. Importar base de datos file.choose() bd <- read.csv(“/Users/Regina/Desktop/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, Mts.2, sort=TRUE) count(bd, Tipo.ubicación, sort=TRUE) count(bd, Giro, sort=TRUE)

tibble(bd)

#Si se quiere mas = head(bd, n=7) head(bd)

#dudas = ?tail tail(bd, n=7) ?Tail

#Tablas y subtablas tabyl(bd, vcClaveTienda, NombreDepartamento) tabyl(bd, NombreFamilia, vcClaveTienda)

#Hallazgos (modificar en tabla) #1. Fechas y Horas estan en formato de caracter #2. Precios negativos #3. No hay columna de ventas

#Paso 3. Limpieza de datos

#Existen 6 técnicas para limpiar datos

#Tecnica 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)

#Tecnica 2. Remover valores duplicados

#¿Cuantos renglones duplicados tenemos? bd2[duplicated(bd2),] sum(duplicated(bd2))

#ELiminar los renglones duplicados bd3<- bd2 bd3<-distinct(bd3)

#Tecnica 3. Resolver errores tipograficos 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)

#Tecnica 4. Convertir tipos de datos

#Convertir de caracter fecha bd6 <-bd bd6\(Fecha <- as.Date(bd6\)Fecha, format= “$%d/%m/%Y”) tibble(bd6)

#Convertit 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)

#Tecnica 5. Tratar valores 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 NA con el PROMEDIO bd10 <- bd bd10\(PLU[is.na(bd10\)PLU)] <-mean(bd10$PLU, na.rm=TRUE) summary (bd10)

#Tecnica 6. Verificar datos con metodos estadisticos bd11 <- bd7 boxplot(bd11\(Precio, horizontal=TRUE) boxplot(bd11\)Unidades, horizontal=TRUE)

#Paso 4. Manipulacion de la base de datos

#Agregar columnas bd11\(diadelasemana <- wday(bd11\)Fecha) summary(bd11)

bd11\(subotal <- 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)