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==