En esta actividad estaré trabajando en R con una base de datos de excel, y posteriormente mostraré técnicas de filtrado para la base de datos. Las técnicas utilizadas fueron:
Eliminación de valores duplicados: Es importante eliminar valores duplicados en la base de datos para que no interfiera en el conteo de datos o la descripción de los mismos, asimismo puede interferir al querer manipular la base de datos en el futuro para extraer hallazgos.
Eliminación de valores irrelevantes: Aquí decidí eliminar los valores cuyo precio sea menor a 0 porque no traen ingresos para la tienda. Asimismo decidí eliminar todos aquellos artículos que tengan una cantidad faltante en el excel.
Reajuste del formato de fecha: Simplemente para que se lea de manera más sencilla el documento, se cambió la fecha a formato dd/mm/aa.
Primero, cargamos los datos desde un archivo Excel usando la librería
readxl.
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.3
ruta_archivo <- "C:/Users/maxwi/Desktop/Abarrotes_Ventas-2.xlsx"
nombre_hoja <- "Total"
datos <- read_excel(ruta_archivo, sheet = nombre_hoja)
## Código para clasificar las variables
num_variables <- ncol(datos)
num_registros <- nrow(datos)
cat("Número de variables (columnas):", num_variables, "\n")
## Número de variables (columnas): 22
cat("Número de registros (filas):", num_registros, "\n")
## Número de registros (filas): 200620
clasificacion <- sapply(datos, function(columna) {
if (is.factor(columna) || is.character(columna)) {
"Cualitativa"
} else if (is.integer(columna)) {
"Cuantitativa Discreta"
} else if (is.numeric(columna)) {
"Cuantitativa Continua"
} else {
"n/a"
}
})
for (i in seq_along(clasificacion)) {
cat(names(datos)[i], ":", clasificacion[i], "\n")
}
## vcClaveTienda : Cualitativa
## DescGiro : Cualitativa
## Codigo Barras : Cuantitativa Continua
## PLU : n/a
## Fecha : n/a
## Hora : n/a
## Marca : Cualitativa
## Fabricante : Cualitativa
## Producto : Cualitativa
## Precio : Cuantitativa Continua
## Ult.Costo : Cuantitativa Continua
## Unidades : Cuantitativa Continua
## F.Ticket : Cuantitativa Continua
## NombreDepartamento : Cualitativa
## NombreFamilia : Cualitativa
## NombreCategoria : Cualitativa
## Estado : Cualitativa
## Mts 2 : Cuantitativa Continua
## Tipo ubicación : Cualitativa
## Giro : Cualitativa
## Hora inicio : n/a
## Hora cierre : n/a
##Escala de medición
determinar_escala <- function(columna) {
if (is.factor(columna) || is.character(columna)) {
"Nominal"
} else if (is.integer(columna)) {
"ordinal o cuantitativa discreta"
} else if (is.numeric(columna)) {
if (length(unique(columna)) < 10) {
"Ordinal"
} else {
"cuantitativa continua"
}
} else {
"desconocido"
}
}
escalas <- sapply(datos, determinar_escala)
for (i in seq_along(escalas)) {
cat(names(datos)[i], ":", escalas[i], "\n")
}
## vcClaveTienda : Nominal
## DescGiro : Nominal
## Codigo Barras : cuantitativa continua
## PLU : desconocido
## Fecha : desconocido
## Hora : desconocido
## Marca : Nominal
## Fabricante : Nominal
## Producto : Nominal
## Precio : cuantitativa continua
## Ult.Costo : cuantitativa continua
## Unidades : cuantitativa continua
## F.Ticket : cuantitativa continua
## NombreDepartamento : Nominal
## NombreFamilia : Nominal
## NombreCategoria : Nominal
## Estado : Nominal
## Mts 2 : Ordinal
## Tipo ubicación : Nominal
## Giro : Nominal
## Hora inicio : desconocido
## Hora cierre : desconocido
## Código para filtrar y eliminar.
#Primera técnica de filtración: Eliminar filas duplicadas con unique.
datos_sfd <- unique(datos)
num_filas_originales_sfd <- nrow(datos)
num_filas_limpio_sfd <- nrow(datos_sfd)
cat("Número de filas originales:", num_filas_originales_sfd, "\n")
## Número de filas originales: 200620
cat("Número de filas después de la limpieza:", num_filas_limpio_sfd, "\n")
## Número de filas después de la limpieza: 200620
#Segunda técnica de filtración: Eliminar valores irrelevantes. (Filas donde la cantidad es 0)
#Eliminando filas en donde el precio sea menor que 0.
columna_a_filtrar <- "Precio"
datos_limpio <- datos[datos[[columna_a_filtrar]] >= 0, ]
num_filas_originales_svi <- nrow(datos)
num_filas_limpio_svi <- nrow(datos_limpio)
cat("Número de filas originales:", num_filas_originales_svi, "\n")
## Número de filas originales: 200620
cat("Número de filas después de la limpieza:", num_filas_limpio_svi, "\n")
## Número de filas después de la limpieza: 200473
#Eliminando filas donde la cantidad de unidades sea faltante.
datos_limpio_sf <- datos[!is.na(datos$Unidades), ]
num_filas_originales_sf <- nrow(datos)
num_filas_limpio_sf <- nrow(datos_limpio)
cat("Número de filas originales:", num_filas_originales_sf, "\n")
## Número de filas originales: 200620
cat("Número de filas después de la limpieza:", num_filas_limpio_sf, "\n")
## Número de filas después de la limpieza: 200473
#Cambiando la columna Fecha a formato dd/mm/aa
columna_fecha_texto <- "Fecha"
datos$Fecha <- as.Date(datos[[columna_fecha_texto]], format = "%A, %d de %B de %Y")
head(datos$Fecha)
## [1] "2020-06-19" "2020-06-19" "2020-06-19" "2020-06-19" "2020-06-19"
## [6] "2020-06-19"
En este modulo estuvimos viendo introducción a R, un lenguaje de programación bastante efectivo y sencillo, el cual al momento de ser utilizado para trabajar con bases de datos se asemeja mucho a python. Los recursos proporcionados por el maestro en clase fueron bastante claros y sencillos de usar, ayudan a entender el fundamento de R y cómo se entrelaza de manera fácil con la filtración de bases de datos. No hace falta ser un expero para poder poner en práctica estos conocimientos y manipular bases de datos para poder extraer información relevante y hallazgos. Esto mismo sucederá con el RETO posteriormente, puesto que poderemos ejercer lo aprendido en el módulo para poder maniobrar de manera efectiva con las bases de datos del INEGI.