Introducción
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.
Carga de Datos
Primero, cargamos los datos desde un archivo Excel usando la librería
readxl.
library(readxl)
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, “”) cat(“Número
de registros (filas):”, num_registros, “”)
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], “”) }
##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],
“”) }
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, “”) cat(“Número de filas después
de la limpieza:”, num_filas_limpio_sfd, “”)
#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, “”)
cat(“Número de filas después de la limpieza:”, num_filas_limpio_svi,
“”)
#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, “”) cat(“Número de filas después de la
limpieza:”, num_filas_limpio_sf, “”)
#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)
Reflexión
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.
LS0tDQp0aXRsZTogJ0FjdGl2aWRhZCAyLjE6IE1hbmVqYSB1bmEgYmFzZSBkZSBkYXRvcycNCmF1dGhvcjogIlBlZHJvIE1heGltaWxpYW5vIFdpbGxtYW4gSGVybsOhbmRleiINCmRhdGU6ICcyMDIzLTA4LTIxJw0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCg0KIyBJbnRyb2R1Y2Npw7NuDQoNCkVuIGVzdGEgYWN0aXZpZGFkIGVzdGFyw6kgdHJhYmFqYW5kbyBlbiBSIGNvbiB1bmEgYmFzZSBkZSBkYXRvcyBkZSBleGNlbCwgeSBwb3N0ZXJpb3JtZW50ZSBtb3N0cmFyw6kgdMOpY25pY2FzIGRlIGZpbHRyYWRvIHBhcmEgbGEgYmFzZSBkZSBkYXRvcy4gTGFzIHTDqWNuaWNhcyB1dGlsaXphZGFzIGZ1ZXJvbjogDQoNCkVsaW1pbmFjacOzbiBkZSB2YWxvcmVzIGR1cGxpY2Fkb3M6IEVzIGltcG9ydGFudGUgZWxpbWluYXIgdmFsb3JlcyBkdXBsaWNhZG9zIGVuIGxhIGJhc2UgZGUgZGF0b3MgcGFyYSBxdWUgbm8gaW50ZXJmaWVyYSBlbiBlbCBjb250ZW8gZGUgZGF0b3MgbyBsYSBkZXNjcmlwY2nDs24gZGUgbG9zIG1pc21vcywgYXNpbWlzbW8gcHVlZGUgaW50ZXJmZXJpciBhbCBxdWVyZXIgbWFuaXB1bGFyIGxhIGJhc2UgZGUgZGF0b3MgZW4gZWwgZnV0dXJvIHBhcmEgZXh0cmFlciBoYWxsYXpnb3MuIA0KDQpFbGltaW5hY2nDs24gZGUgdmFsb3JlcyBpcnJlbGV2YW50ZXM6IEFxdcOtIGRlY2lkw60gZWxpbWluYXIgbG9zIHZhbG9yZXMgY3V5byBwcmVjaW8gc2VhIG1lbm9yIGEgMCBwb3JxdWUgbm8gdHJhZW4gaW5ncmVzb3MgcGFyYSBsYSB0aWVuZGEuIEFzaW1pc21vIGRlY2lkw60gZWxpbWluYXIgdG9kb3MgYXF1ZWxsb3MgYXJ0w61jdWxvcyBxdWUgdGVuZ2FuIHVuYSBjYW50aWRhZCBmYWx0YW50ZSBlbiBlbCBleGNlbC4NCg0KUmVhanVzdGUgZGVsIGZvcm1hdG8gZGUgZmVjaGE6IFNpbXBsZW1lbnRlIHBhcmEgcXVlIHNlIGxlYSBkZSBtYW5lcmEgbcOhcyBzZW5jaWxsYSBlbCBkb2N1bWVudG8sIHNlIGNhbWJpw7MgbGEgZmVjaGEgYSBmb3JtYXRvIGRkL21tL2FhLg0KDQojIyBDYXJnYSBkZSBEYXRvcw0KDQpQcmltZXJvLCBjYXJnYW1vcyBsb3MgZGF0b3MgZGVzZGUgdW4gYXJjaGl2byBFeGNlbCB1c2FuZG8gbGEgbGlicmVyw61hIGByZWFkeGxgLg0KDQpsaWJyYXJ5KHJlYWR4bCkNCg0KcnV0YV9hcmNoaXZvIDwtICJDOi9Vc2Vycy9tYXh3aS9EZXNrdG9wL0FiYXJyb3Rlc19WZW50YXMtMi54bHN4Ig0Kbm9tYnJlX2hvamEgPC0gIlRvdGFsIg0KDQpkYXRvcyA8LSByZWFkX2V4Y2VsKHJ1dGFfYXJjaGl2bywgc2hlZXQgPSBub21icmVfaG9qYSkNCg0KIyMgQ8OzZGlnbyBwYXJhIGNsYXNpZmljYXIgbGFzIHZhcmlhYmxlcw0KbnVtX3ZhcmlhYmxlcyA8LSBuY29sKGRhdG9zKQ0KDQpudW1fcmVnaXN0cm9zIDwtIG5yb3coZGF0b3MpDQoNCmNhdCgiTsO6bWVybyBkZSB2YXJpYWJsZXMgKGNvbHVtbmFzKToiLCBudW1fdmFyaWFibGVzLCAiXG4iKQ0KY2F0KCJOw7ptZXJvIGRlIHJlZ2lzdHJvcyAoZmlsYXMpOiIsIG51bV9yZWdpc3Ryb3MsICJcbiIpDQoNCmNsYXNpZmljYWNpb24gPC0gc2FwcGx5KGRhdG9zLCBmdW5jdGlvbihjb2x1bW5hKSB7DQogIGlmIChpcy5mYWN0b3IoY29sdW1uYSkgfHwgaXMuY2hhcmFjdGVyKGNvbHVtbmEpKSB7DQogICAgIkN1YWxpdGF0aXZhIg0KICB9IGVsc2UgaWYgKGlzLmludGVnZXIoY29sdW1uYSkpIHsNCiAgICAiQ3VhbnRpdGF0aXZhIERpc2NyZXRhIg0KICB9IGVsc2UgaWYgKGlzLm51bWVyaWMoY29sdW1uYSkpIHsNCiAgICAiQ3VhbnRpdGF0aXZhIENvbnRpbnVhIg0KICB9IGVsc2Ugew0KICAgICJuL2EiDQogIH0NCn0pDQoNCmZvciAoaSBpbiBzZXFfYWxvbmcoY2xhc2lmaWNhY2lvbikpIHsNCiAgY2F0KG5hbWVzKGRhdG9zKVtpXSwgIjoiLCBjbGFzaWZpY2FjaW9uW2ldLCAiXG4iKQ0KfQ0KDQojI0VzY2FsYSBkZSBtZWRpY2nDs24NCmRldGVybWluYXJfZXNjYWxhIDwtIGZ1bmN0aW9uKGNvbHVtbmEpIHsNCiAgaWYgKGlzLmZhY3Rvcihjb2x1bW5hKSB8fCBpcy5jaGFyYWN0ZXIoY29sdW1uYSkpIHsNCiAgICAiTm9taW5hbCINCiAgfSBlbHNlIGlmIChpcy5pbnRlZ2VyKGNvbHVtbmEpKSB7DQogICAgIm9yZGluYWwgbyBjdWFudGl0YXRpdmEgZGlzY3JldGEiDQogIH0gZWxzZSBpZiAoaXMubnVtZXJpYyhjb2x1bW5hKSkgew0KICAgIGlmIChsZW5ndGgodW5pcXVlKGNvbHVtbmEpKSA8IDEwKSB7DQogICAgICAiT3JkaW5hbCINCiAgICB9IGVsc2Ugew0KICAgICAgImN1YW50aXRhdGl2YSBjb250aW51YSINCiAgICB9DQogIH0gZWxzZSB7DQogICAgImRlc2Nvbm9jaWRvIg0KICB9DQp9DQoNCmVzY2FsYXMgPC0gc2FwcGx5KGRhdG9zLCBkZXRlcm1pbmFyX2VzY2FsYSkNCg0KZm9yIChpIGluIHNlcV9hbG9uZyhlc2NhbGFzKSkgew0KICBjYXQobmFtZXMoZGF0b3MpW2ldLCAiOiIsIGVzY2FsYXNbaV0sICJcbiIpDQp9DQoNCiMjIEPDs2RpZ28gcGFyYSBmaWx0cmFyIHkgZWxpbWluYXIuDQojUHJpbWVyYSB0w6ljbmljYSBkZSBmaWx0cmFjacOzbjogRWxpbWluYXIgZmlsYXMgZHVwbGljYWRhcyBjb24gdW5pcXVlLiANCmRhdG9zX3NmZCA8LSB1bmlxdWUoZGF0b3MpDQpudW1fZmlsYXNfb3JpZ2luYWxlc19zZmQgPC0gbnJvdyhkYXRvcykNCm51bV9maWxhc19saW1waW9fc2ZkIDwtIG5yb3coZGF0b3Nfc2ZkKQ0KY2F0KCJOw7ptZXJvIGRlIGZpbGFzIG9yaWdpbmFsZXM6IiwgbnVtX2ZpbGFzX29yaWdpbmFsZXNfc2ZkLCAiXG4iKQ0KY2F0KCJOw7ptZXJvIGRlIGZpbGFzIGRlc3B1w6lzIGRlIGxhIGxpbXBpZXphOiIsIG51bV9maWxhc19saW1waW9fc2ZkLCAiXG4iKQ0KDQojU2VndW5kYSB0w6ljbmljYSBkZSBmaWx0cmFjacOzbjogRWxpbWluYXIgdmFsb3JlcyBpcnJlbGV2YW50ZXMuIChGaWxhcyBkb25kZSBsYSBjYW50aWRhZCBlcyAwKQ0KI0VsaW1pbmFuZG8gZmlsYXMgZW4gZG9uZGUgZWwgcHJlY2lvIHNlYSBtZW5vciBxdWUgMC4NCmNvbHVtbmFfYV9maWx0cmFyIDwtICJQcmVjaW8iDQpkYXRvc19saW1waW8gPC0gZGF0b3NbZGF0b3NbW2NvbHVtbmFfYV9maWx0cmFyXV0gPj0gMCwgXQ0KbnVtX2ZpbGFzX29yaWdpbmFsZXNfc3ZpIDwtIG5yb3coZGF0b3MpDQpudW1fZmlsYXNfbGltcGlvX3N2aSA8LSBucm93KGRhdG9zX2xpbXBpbykNCmNhdCgiTsO6bWVybyBkZSBmaWxhcyBvcmlnaW5hbGVzOiIsIG51bV9maWxhc19vcmlnaW5hbGVzX3N2aSwgIlxuIikNCmNhdCgiTsO6bWVybyBkZSBmaWxhcyBkZXNwdcOpcyBkZSBsYSBsaW1waWV6YToiLCBudW1fZmlsYXNfbGltcGlvX3N2aSwgIlxuIikNCg0KI0VsaW1pbmFuZG8gZmlsYXMgZG9uZGUgbGEgY2FudGlkYWQgZGUgdW5pZGFkZXMgc2VhIGZhbHRhbnRlLg0KZGF0b3NfbGltcGlvX3NmIDwtIGRhdG9zWyFpcy5uYShkYXRvcyRVbmlkYWRlcyksIF0NCm51bV9maWxhc19vcmlnaW5hbGVzX3NmIDwtIG5yb3coZGF0b3MpDQpudW1fZmlsYXNfbGltcGlvX3NmIDwtIG5yb3coZGF0b3NfbGltcGlvKQ0KY2F0KCJOw7ptZXJvIGRlIGZpbGFzIG9yaWdpbmFsZXM6IiwgbnVtX2ZpbGFzX29yaWdpbmFsZXNfc2YsICJcbiIpDQpjYXQoIk7Dum1lcm8gZGUgZmlsYXMgZGVzcHXDqXMgZGUgbGEgbGltcGllemE6IiwgbnVtX2ZpbGFzX2xpbXBpb19zZiwgIlxuIikNCg0KI0NhbWJpYW5kbyBsYSBjb2x1bW5hIEZlY2hhIGEgZm9ybWF0byBkZC9tbS9hYQ0KY29sdW1uYV9mZWNoYV90ZXh0byA8LSAiRmVjaGEiDQpkYXRvcyRGZWNoYSA8LSBhcy5EYXRlKGRhdG9zW1tjb2x1bW5hX2ZlY2hhX3RleHRvXV0sIGZvcm1hdCA9ICIlQSwgJWQgZGUgJUIgZGUgJVkiKQ0KaGVhZChkYXRvcyRGZWNoYSkNCg0KIyMgUmVmbGV4acOzbg0KRW4gZXN0ZSBtb2R1bG8gZXN0dXZpbW9zIHZpZW5kbyBpbnRyb2R1Y2Npw7NuIGEgUiwgdW4gbGVuZ3VhamUgZGUgcHJvZ3JhbWFjacOzbiBiYXN0YW50ZSBlZmVjdGl2byB5IHNlbmNpbGxvLCBlbCBjdWFsIGFsIG1vbWVudG8gZGUgc2VyIHV0aWxpemFkbyBwYXJhIHRyYWJhamFyIGNvbiBiYXNlcyBkZSBkYXRvcyBzZSBhc2VtZWphIG11Y2hvIGEgcHl0aG9uLiBMb3MgcmVjdXJzb3MgcHJvcG9yY2lvbmFkb3MgcG9yIGVsIG1hZXN0cm8gZW4gY2xhc2UgZnVlcm9uIGJhc3RhbnRlIGNsYXJvcyB5IHNlbmNpbGxvcyBkZSB1c2FyLCBheXVkYW4gYSBlbnRlbmRlciBlbCBmdW5kYW1lbnRvIGRlIFIgeSBjw7NtbyBzZSBlbnRyZWxhemEgZGUgbWFuZXJhIGbDoWNpbCBjb24gbGEgZmlsdHJhY2nDs24gZGUgYmFzZXMgZGUgZGF0b3MuIE5vIGhhY2UgZmFsdGEgc2VyIHVuIGV4cGVybyBwYXJhIHBvZGVyIHBvbmVyIGVuIHByw6FjdGljYSBlc3RvcyBjb25vY2ltaWVudG9zIHkgbWFuaXB1bGFyIGJhc2VzIGRlIGRhdG9zIHBhcmEgcG9kZXIgZXh0cmFlciBpbmZvcm1hY2nDs24gcmVsZXZhbnRlIHkgaGFsbGF6Z29zLiBFc3RvIG1pc21vIHN1Y2VkZXLDoSBjb24gZWwgUkVUTyBwb3N0ZXJpb3JtZW50ZSwgcHVlc3RvIHF1ZSBwb2RlcmVtb3MgZWplcmNlciBsbyBhcHJlbmRpZG8gZW4gZWwgbcOzZHVsbyBwYXJhIHBvZGVyIG1hbmlvYnJhciBkZSBtYW5lcmEgZWZlY3RpdmEgY29uIGxhcyBiYXNlcyBkZSBkYXRvcyBkZWwgSU5FR0kuIA==