La Industria de Licores del Valle (ILV), fundada en 1921, distribuye sus productos a través de una amplia red de puntos de venta ubicados en distintos municipios del departamento del Valle del Cauca. Esta red está conformada por supermercados, licoreras, mayoristas y establecimientos de venta “tienda a tienda” (TAT), cada uno atendido por un responsable comercial asignado.
Conocer cómo se distribuyen estos puntos de venta a lo largo del territorio, qué canales predominan, quiénes son los responsables con mayor carga de clientes y qué características tienen los registros de contacto de cada punto, resulta fundamental para la toma de decisiones logísticas y comerciales de la compañía.
El presente informe corresponde al desarrollo de la Actividad 112, y tiene como propósito aplicar herramientas de estadística descriptiva —tablas de frecuencia, medidas de tendencia central, de dispersión y de posición, así como representaciones gráficas— sobre la base de datos “Puntos de distribución de los productos de la ILV en el Valle del Cauca”, con el fin de caracterizar tanto variables cualitativas como cuantitativas presentes en el conjunto de datos.
Realizar un análisis estadístico descriptivo de al menos dos variables cualitativas y dos variables cuantitativas de la base de datos de puntos de distribución de la ILV en el Valle del Cauca, apoyado en tablas de frecuencia e indicadores estadísticos, con el fin de identificar patrones relevantes para la gestión comercial de la compañía.
La base de datos original contiene principalmente variables de tipo cualitativo (nominal), por lo cual, para dar cumplimiento al requisito de analizar variables cuantitativas, se construyeron dos variables numéricas derivadas directamente de los datos de texto ya existentes en la base (sin inventar ni modificar la información original). A continuación se justifica la selección:
| Tipo | Variable | Justificación |
|---|---|---|
| Cualitativa | Canal | Clasifica el punto de venta (Supermercado, Licorera, Mayorista, TAT). Permite identificar el canal predominante de distribución. |
| Cualitativa | Ciudad | Ubicación geográfica del punto de distribución. Permite identificar la concentración territorial de los puntos de venta. |
| Cuantitativa | Longitud del nombre del cliente
(Longitud_Cliente) |
Número de caracteres del nombre comercial del punto de venta
(columna Cliente). Variable numérica discreta obtenida de
un dato original de texto. |
| Cuantitativa | Longitud de la dirección
(Longitud_Direccion) |
Número de caracteres de la dirección registrada (columna
Dirección). Variable numérica discreta que permite evaluar
el nivel de detalle con el que se registran las direcciones. |
Adicionalmente se conserva la variable Responsable para un análisis complementario de interés (cruce con las variables cuantitativas).
Los datos se incorporan directamente en este documento para garantizar la reproducibilidad del informe sin depender de rutas de archivos externas.
texto_csv <- '"Activo","#","Ciudad","Canal","Responsable","Cliente","Línea Domicilio","Dirección"
"SI","1","La Unión","Supermercado","Jhenny Romero","Supermercado MercaPlaza","2023491","Calle 14 # 15 - 13"
"SI","2","Rozo","Licorera","Katherine Rengifo","Estanco Blanco del Valle","3122475697","Calle 10 # 9A- 29"
"SI","3","Guacarí","Mayorista","Katherine Rengifo","Licores Los Paisas","3216537169","Carrera 7 # 4 - 80"
"SI","7","Cali","Mayorista","Edwin Polanco","Los Paisas de la 44","4415918 - 3113078334","calle 44 # 14-62"
"SI","8","Cali","Mayorista","Edwin Polanco","Brisas de Juanchito","6560777 - 3153158897","Carrera 8 #72-04"
"SI","9","Cali","Mayorista","Edwin Polanco","La 66","3314763 - 3176095207","Carrera 66 #10-12"
"SI","10","Cali","Mayorista","Edwin Polanco","Villa del Lago","6627676","Diagonal 70 # 25e-10"
"SI","11","Cali","Mayorista","Edwin Polanco","Los Panchos","6629305","calle 73 # 7tbII2-38"
"SI","12","Cali","Mayorista","Edwin Polanco","La Mayorista","4416350","Carera 27 dg 28b -93"
"SI","13","Cali","Mayorista","Edwin Polanco","El Poblado","4263073","Calle 72u # 28-47"
"SI","14","Cali","Mayorista","Edwin Polanco","Licores La Amistad","4471825","Calle 46c # 5-01"
"SI","15","Cali","Mayorista","Edwin Polanco","Los Gemelos","4489216","Calle 44 # 6n-57"
"SI","16","Cali","Mayorista","Edwin Polanco","El amigo de la Noche","App","App"
"SI","17","Cali","Mayorista","Edwin Polanco","La Rebaja","App","Carrera 15 #33b-30"
"SI","18","Buenaventura","Mayorista","Edwin Polanco","Casablanca","2433412","calle 3 # 18-42"
"SI","19","Buenaventura","Mayorista","Edwin Polanco","La Rebajona","2416300","carrera 6 # 4a-54"
"SI","20","Tuluá","Supermercado","Lina Colonia","Autoservicio Mi Barrio","312 806 22 21","Carrera 24 # 36 - 04"
"SI","21","Tuluá","Mayorista","Lina Colonia","Bodega La Esperanza","316 253 5816","Carrera 23 # 29-04"
"SI","22","Tuluá","Mayorista","Lina Colonia","Distribuidora Farallón","311 334 1151","Carrera 22 Calle 28"
"SI","23","Tuluá","Licorera","Lina Colonia","Licores Junior La 28","2320073","Calle 28 # 22-56"
"SI","24","Tuluá","Mayorista","Lina Colonia","Distribuidora La Madeja","317 789 75 09","Calle 29 # 22-36"
"SI","25","Buga","Mayorista","Lina Colonia","Distribuidora El Madejón","310 413 95 50","Calle 9 # 12 - 10"
"SI","26","Andalucía","Mayorista","Lina Colonia","Distribuidora Central de Andalucía","314 761 70 13","Carrera 5 # 12 - 67"
"SI","27","Tuluá","Mayorista","Lina Colonia","Autoservicio El Campesino","224 4272","Carrera 22 Calle 29"
"SI","29","Trujillo","Licorera","Lina Colonia","Licorera El Alambique","312 736 9212","Carrera 19 # 19-22"
"SI","30","San Pedro","Mayorista","Lina Colonia","Distribuidora San Pedro","311 393 5295","Calle 5 Parque Principal"
"SI","31","Tuluá","Supermercado","Lina Colonia","Mauro Market","323 423 8848","Calle 34 Carrera 34"
"SI","32","Tuluá","Licorera","Lina Colonia","Licores El Estanco","305 372 46 39","Transv 12 # 24-46"
"SI","33","Buga","Licorera","Lina Colonia","Licores La 4ta Avenida","3167142019","Calle 4 # 6 - 06"
"SI","34","Cali","TAT","Ana Rosa Lopera","Supermercado Tarzan","3143874179","Carrera 82 #5-97"
"SI","36","Cali","TAT","Ana Rosa Lopera","Licores La Perla","5216031","Polvorines vía ppal"
"SI","38","Cali","TAT","Ana Rosa Lopera","Licores Helen","3022491892","Carrera 25 #19-02"
"SI","39","Cali","TAT","Ana Rosa Lopera","Mini Market 7","3134661206","Calle 7 #31-09"
"SI","40","Cali","TAT","Ana Rosa Lopera","Alvaro Prado","4207110","Carrera 26 u #122=94"
"SI","41","Cali","TAT","Ana Rosa Lopera","Carlos Lopez","4201897","Carrera 25 c # 123-01"
"SI","43","Cali","TAT","Ana Rosa Lopera","Granero y Estanco Martinez","4306553","Carrera 4 A #60 - 82"
"SI","46","Cali","TAT","Ana Rosa Lopera","Supertienda Carvajal","3015493138","Calle 13 # 34 - 33"
"SI","47","Cali","TAT","Ana Rosa Lopera","Licores La Sucursal","4482670","Calle 44 #5-26"
"SI","49","Cali","TAT","Ana Rosa Lopera","Mercaplaza Mariano","374330575","CLL 46 # 49-03"
"SI","53","Cali","TAT","Ana Rosa Lopera","supermercado Nuevo Progreso","3760861","CR 34 # 26A-03"
"SI","54","Cali","TAT","Ana Rosa Lopera","Rapitienda Caldas","3137974910","CLL 26A # 38-09"
"SI","56","Cali","TAT","Ana Rosa Lopera","Nicolas Elias","6662306","AV 3 E # 47C-20"
"SI","57","Cali","TAT","Ana Rosa Lopera","Minarket 1000 y Mas","3178814634","CLL 44N # 3-111"
"SI","58","Cali","TAT","Ana Rosa Lopera","Brandon Carvajal","3136372746","CLL 27 # 41C-37"
"SI","59","Cali","TAT","Ana Rosa Lopera","Carolina Espinosa","3132614285","CR 67 # 1A 0STE 07"
"SI","60","Cali","TAT","Ana Rosa Lopera","Licores Los Cerros","3204796646","CLL1 #69-44"
"SI","61","Cali","TAT","Ana Rosa Lopera","La Rebajona","3734192","CL 14A 53 03"
"SI","63","Cali","TAT","Ana Rosa Lopera","Licores El Baratisimo","4339595","Kra 1 kn # 80 74"
"SI","65","Cali","TAT","Ana Rosa Lopera","Marco Tulio Giraldo","4333355","Cl 76A # 1D 03"
"SI","66","Cali","TAT","Ana Rosa Lopera","Licores Sanchez","3184662902","Kra 27 # 33 E 39"
"SI","67","Cali","TAT","Ana Rosa Lopera","Granero El Buen Precio","4412666","CLL 34 # 25A-03"
"SI","70","Cali","TAT","Ana Rosa Lopera","Licores La Abundancia","3154673318","CL 72B# 28D3- 123"
"SI","72","Cali","TAT","Ana Rosa Lopera","Tienda Rojo y Verde","3113630033","oeste santa teresita, Av. 2 Oe"
"SI","73","Poblado Campestre","TAT","Ana Rosa Lopera","Tienda y Licores Mas Barato","3006673631","MANZANA 28 CASA 22-05"
"SI","74","Poblado Campestre","TAT","Ana Rosa Lopera","Minimarket El Majo","3174559610","Calle 22 con carrera 41 oeste, manzana 30 casa 24,"
"SI","75","Poblado Campestre","TAT","Ana Rosa Lopera","Rendimercado Las 2 Palmas","3122879341","Carrera 4 #9-09"
"SI","82","Cali","TAT","Ana Rosa Lopera","Autoservicio y Panadería Caribe","5136160","Cra 56 1.ª 16 oeste"
"SI","85","Cali","TAT","Ana Rosa Lopera","Supermercado La Ganguita","4468365","Cra 1c4 64A 14 bloque 15"
"SI","89","Cali","TAT","Ana Rosa Lopera","Rapitienda La Esperanza","3137849701","Cll 27 29b 18"
"SI","93","Cali","TAT","Ana Rosa Lopera","El Rebajon","5579626","Cll 9e 22a12"
"SI","95","Cali","TAT","Ana Rosa Lopera","Minimarket Matecaña","5582197","CR 23 12.ª 03"
"SI","111","Cartago","Mayorista","Jhenny Romero","Garces","2133333","Carrera 4 # 19-38"
"SI","112","Zarzal","Mayorista","Jhenny Romero","Cigarrería La Andina","3152228870","Calle 9 # 8 - 76"
"SI","113","Cartago","Mayorista","Jhenny Romero","Licores Raulette","2125411","Carrera 4 # 11-30"
"SI","114","La Unión","Licorera","Jhenny Romero","Estanquillo La 16","2292935","Carrera 16 # 17 - 44"
"SI","115","Roldanillo","Mayorista","Jhenny Romero","Estanquillo Muñoz","2297172","Calle 8 # 7 - 67"
"SI","116","Cartago","Mayorista","Jhenny Romero","Comercializadora Don Jimmy","2139099","Carrera / # 11-51"
"SI","118","Cartago","Mayorista","Jhenny Romero","Saloon Licores","3175131166","Calle 10 # 15 - 20"
"SI","119","Palmira","Mayorista","Katherine Rengifo","Licores Palmira","2859975-3218677680","Calle 31 # 37 - 56"
"SI","120","El Placer","Mayorista","Katherine Rengifo","Granero Los Paisas","3173171258-2548145","Carrera 8 # 6 -12"
"SI","121","Cerrito","Licorera","Katherine Rengifo","Estanco Punto Blanco","3146620834","Calle 7 # 12 - 08"
"SI","122","Pradera","Licorera","Katherine Rengifo","El Barril de la 6","3163471484-2670572-3187944106","Calle 6 # 11-03"
"SI","123","Pradera","Supermercado","Katherine Rengifo","Mercapava","2834030","Calle 7 # 9-59"
"SI","124","Candelaria","Mayorista","Katherine Rengifo","Estanco y Dulcería Los Paisas","3136518541","Carrera 7 # 4-80"
"SI","125","Florida","Mayorista","Katherine Rengifo","Distribuidora Cordillera Central","3117666820","Carrera 14 # 8 - 61"
"SI","126","Palmira","Supermercado","Katherine Rengifo","Supermercado La Gran Colombia","3004377555","Carrera 28 # 66A - 86"
"SI","127","Palmira","Supermercado","Katherine Rengifo","SuperInter La Cometa","3113775927","Carrera 19 # 42A - 23"
"SI","129","Palmira","Supermercado","Katherine Rengifo","Olimpica Versalles","2896657","Calle 42 # 28 Esquina"
"SI","130","Tuluá","Mayorista","Lina Colonia","Distri Jota SAS","(2) 224 9488","Calle 29 # 22-23"
"SI","131","Tuluá","Mayorista","Lina Colonia","Depósito La Ganga","(2) 225 7742","Carrera 22 # 28 - 49"
"SI","132","Tuluá","Mayorista","Lina Colonia","Cacharrería yDist. JM","318 369 2722",
"SI","133","Tuluá","Mayorista","Lina Colonia","Almacén Ossa","317 513 4129","Carrera 22 # 29A - 04"
"SI","135","Restrepo","Mayorista","Lina Colonia","Los Paisas","321 482 7231","Carrera 10 # 9-50 Plaza de mercado"
"SI","136","Buga","Mayorista","Lina Colonia","Depóstito El Triunfo","(2) 227 1824","Calle 21 # 12-59"
"SI","137","Palmira","Mayorista","Katherine Rengifo","Miscelanea La Unión","3157030966 - 2836460","cra 25 #27-44"
"SI","138","Cali","TAT","Ana Rosa Lopera","Luz marina zuluaga","3207412307","AV 15 OESTE # 7 03"
"SI","139","Cali","TAT","Ana Rosa Lopera","Ramon giraldo","3113754878","CLL 12 OESTE # 39-06"
"SI","141","Cali","TAT","Ana Rosa Lopera","Doly hortencia","5514843","CR 40A # 9C 20"
"SI","142","Cali","TAT","Ana Rosa Lopera","Jonny salazar giraldo","3117636936","CLL 13 # 47 04"
"SI","143","Cali","TAT","Ana Rosa Lopera","Carlos alberto lopez","5531616","CR 47A # 10-83"
"SI","144","Cali","TAT","Ana Rosa Lopera","Yakeline ospina","3053624703","CLL 52A # 29B 17"
"SI","145","Cali","TAT","Ana Rosa Lopera","Jaime ocampo valencia","3103953082","CLL 51 # 29A 118"
"SI","146","Cali","TAT","Ana Rosa Lopera","Jesus antonio barles","3931110","CR 32A # 51A 20"
"SI","147","Cali","TAT","Ana Rosa Lopera","Ciro solis","3217534183","CR 29B # 46 00"
"SI","148","Cali","TAT","Ana Rosa Lopera","Jaime jaramillo","3146940159","CR 29 B # 40 99"
"SI","149","Cali","TAT","Ana Rosa Lopera","Carlos alberto lopez","3137671699","CLL 49# 8A 23"
"SI","150","Cali","TAT","Ana Rosa Lopera","Olga pelaez","4337053","CLL 71C # 3BN 70"
"SI","151","Cali","TAT","Ana Rosa Lopera","Alba nora","3207552888","CLL 45 # 98A 28"
"SI","152","Cali","TAT","Ana Rosa Lopera","Diliana españa","3162451945","CR 83C # 48 223"
"SI","153","Cali","TAT","Ana Rosa Lopera","Supermercado aranjuez","3722002","CR 23 15B 44"
"SI","154","Cali","TAT","Ana Rosa Lopera","Licores sarasty","3104156267","CLL 58A 1B 06"
"SI","155","Cali","TAT","Ana Rosa Lopera","Licores baratillo","3187914323","CR 26U # 122 94"
"SI","156","Cali","TAT","Ana Rosa Lopera","Giovanny duque","3153471142","CR 23 12.ª 03"
"SI","157","Cali","TAT","Ana Rosa Lopera","Dulceria y licores JL","3218729505","CLL 11 # 8 19"
"SI","158","Palmira","Mayorista","Katherine Rengifo","miscelanea San Agustin","2734001","Cra 28 # 35 - 43"
"SI","159","Ginebra","Mayorista","Katherine Rengifo","Estanco Luz","2561280","Calle 4 # 3 - 58"
"SI","160","Villagorgona","Mayorista","Katherine Rengifo","Comercializadora La Berraquera","2607952","Calle 16 # 10 - 16"
"SI","161","Buga","Mayorista","Lina Colonia","Licores La 21","316 7156198","Calle 21 # 13 - 04"
"SI","162","Buga","Mayorista","Lina Colonia","Licores Estambul","316 6154526","Calle 11 # 11-18"
"SI","163","Buga","Mayorista","Lina Colonia","Distrikopas",,
"SI","164","La Paila","Mayorista","Jhenny Romero","Miscelanea Melany","3022880752","Carrera 4 # 12-61"
"SI","165","Alcalá","Mayorista","Jhenny Romero","Rapitienda Ruta del Café","3147628822","Carrera 8 # 5-17"
"SI","166","Cali","TAT","Ana Rosa Lopera","Autoservicio Monterrey","4205905","Carrera 27 # 96- 259"
"SI","167","Cali","TAT","Ana Rosa Lopera","Tienda y Licores Alejo","3178187438","Cra 1a5 - # 76 -05"
"SI","168","Cali","TAT","Ana Rosa Lopera","Arnaldo Monte. Super Tienda la sorpresa","4412223","cra 15 # 35 -19"
"SI","169","Cali","TAT","Ana Rosa Lopera","Carlos Gonzales Supermerke valle del lili","3480941","cra 91 # 42 - 111"
"SI","170","Cali","TAT","Ana Rosa Lopera","comercialziadora el gangazo","8895541","calle 23 # 11- 03"
"SI","171","Cali","TAT","Ana Rosa Lopera","Duque Garcia alirio - Tienda Mixta","3122232832","cra 42 # 26 b 68"
"SI","172","Cali","TAT","Ana Rosa Lopera","Edgar Andres Bedoya cano - Licores la 22","3167405422","cra 22 # 1 - 44"
"SI","173","Cali","TAT","Ana Rosa Lopera","Torres jirafa alonso de jesus - Tienda la 75","3238702","cra 75 # 1bis 45oeste"
"SI","174","Cali","TAT","Ana Rosa Lopera","Lopez Yepes Juan franciso - Miscelanea Yepes","3073246","cra 70 # 2b - 06"
"SI","175","Cali","TAT","Ana Rosa Lopera","Daza Mercado eviliana - Tienda mixta","3174386915","Av 7 n # 53 -01"
"SI","176","Cali","TAT","Ana Rosa Lopera","Cocha Aide - Licores Dila","3104254005","calle 102g - # 23 - 100"
"SI","177","Cali","TAT","Ana Rosa Lopera","Jurado Guzman Carlos Andres - Tienda la Mona","3005082848","calle 10 oeste #2a - 16"
"SI","178","Cali","TAT","Ana Rosa Lopera","Widelmar mafla - Tienda la Familia","3116092604","cra 3a 0este # 9- 270"
"SI","179","Cali","TAT","Ana Rosa Lopera","Robledo Garcia Lina Maria Licores JM","3182222546","CRA 13 #5-23"
"SI","180","Cali","TAT","Ana Rosa Lopera","Nlfy Fonseca Polo","3206540970","cra 6 N 42 a 03"
"SI","181","Tuluá","Licorera","Lina Colonia","Licores VIP","3216605343","Calle 40 # 24 - 78"'
datos_originales <- read.csv(text = texto_csv, stringsAsFactors = FALSE)
# Se asignan nombres de columna sin tildes ni caracteres especiales,
# respetando el orden original de la base de datos
colnames(datos_originales) <- c("Activo", "Numero", "Ciudad", "Canal",
"Responsable", "Cliente",
"Linea_Domicilio", "Direccion")
datos <- datos_originales
# Creación de las variables cuantitativas derivadas
datos <- datos %>%
mutate(
Ciudad = as.character(Ciudad),
Canal = as.character(Canal),
Responsable = as.character(Responsable),
Cliente = as.character(Cliente),
Direccion = as.character(Direccion),
Longitud_Cliente = nchar(Cliente),
Longitud_Direccion = ifelse(is.na(Direccion) | Direccion == "",
NA_integer_, nchar(Direccion))
)
glimpse(datos)## Rows: 128
## Columns: 10
## $ Activo <chr> "SI", "SI", "SI", "SI", "SI", "SI", "SI", "SI", "SI…
## $ Numero <int> 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1…
## $ Ciudad <chr> "La Unión", "Rozo", "Guacarí", "Cali", "Cali", "Cal…
## $ Canal <chr> "Supermercado", "Licorera", "Mayorista", "Mayorista…
## $ Responsable <chr> "Jhenny Romero", "Katherine Rengifo", "Katherine Re…
## $ Cliente <chr> "Supermercado MercaPlaza", "Estanco Blanco del Vall…
## $ Linea_Domicilio <chr> "2023491", "3122475697", "3216537169", "4415918 - 3…
## $ Direccion <chr> "Calle 14 # 15 - 13", "Calle 10 # 9A- 29", "Carrera…
## $ Longitud_Cliente <int> 23, 24, 18, 19, 19, 5, 14, 11, 12, 10, 18, 11, 20, …
## $ Longitud_Direccion <int> 18, 17, 18, 16, 16, 17, 20, 20, 20, 17, 16, 16, 3, …
kable(head(datos %>%
select(Numero, Ciudad, Canal, Responsable, Cliente,
Longitud_Cliente, Longitud_Direccion), 10),
caption = "Primeros 10 registros de la base de datos") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = TRUE)| Numero | Ciudad | Canal | Responsable | Cliente | Longitud_Cliente | Longitud_Direccion |
|---|---|---|---|---|---|---|
| 1 | La Unión | Supermercado | Jhenny Romero | Supermercado MercaPlaza | 23 | 18 |
| 2 | Rozo | Licorera | Katherine Rengifo | Estanco Blanco del Valle | 24 | 17 |
| 3 | Guacarí | Mayorista | Katherine Rengifo | Licores Los Paisas | 18 | 18 |
| 7 | Cali | Mayorista | Edwin Polanco | Los Paisas de la 44 | 19 | 16 |
| 8 | Cali | Mayorista | Edwin Polanco | Brisas de Juanchito | 19 | 16 |
| 9 | Cali | Mayorista | Edwin Polanco | La 66 | 5 | 17 |
| 10 | Cali | Mayorista | Edwin Polanco | Villa del Lago | 14 | 20 |
| 11 | Cali | Mayorista | Edwin Polanco | Los Panchos | 11 | 20 |
| 12 | Cali | Mayorista | Edwin Polanco | La Mayorista | 12 | 20 |
| 13 | Cali | Mayorista | Edwin Polanco | El Poblado | 10 | 17 |
n_registros <- nrow(datos)
n_variables <- ncol(datos_originales)
resumen_na <- data.frame(
Variable = c("Ciudad", "Canal", "Responsable", "Cliente",
"Linea_Domicilio", "Direccion"),
Valores_faltantes = c(
sum(is.na(datos$Ciudad) | datos$Ciudad == ""),
sum(is.na(datos$Canal) | datos$Canal == ""),
sum(is.na(datos$Responsable) | datos$Responsable == ""),
sum(is.na(datos$Cliente) | datos$Cliente == ""),
sum(is.na(datos$Linea_Domicilio) | datos$Linea_Domicilio == ""),
sum(is.na(datos$Direccion) | datos$Direccion == "")
)
)
kable(resumen_na, caption = "Valores faltantes por variable") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))| Variable | Valores_faltantes |
|---|---|
| Ciudad | 0 |
| Canal | 0 |
| Responsable | 0 |
| Cliente | 0 |
| Linea_Domicilio | 1 |
| Direccion | 2 |
La base de datos cuenta con 128 puntos de distribución registrados y 8 variables originales, todas ellas con la condición “Activo = SI”, es decir, corresponden a puntos vigentes de la red de distribución de la ILV.
tabla_canal <- datos %>%
count(Canal, name = "Frecuencia_Absoluta") %>%
arrange(desc(Frecuencia_Absoluta)) %>%
mutate(
Frecuencia_Relativa = round(Frecuencia_Absoluta / sum(Frecuencia_Absoluta), 4),
Porcentaje = percent(Frecuencia_Relativa, accuracy = 0.1),
Frecuencia_Acumulada = cumsum(Frecuencia_Absoluta),
Porcentaje_Acumulado = percent(cumsum(Frecuencia_Relativa), accuracy = 0.1)
)
kable(tabla_canal,
col.names = c("Canal", "Frec. Absoluta", "Frec. Relativa",
"Porcentaje", "Frec. Acumulada", "% Acumulado"),
caption = "Tabla de frecuencias - Variable Canal") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = TRUE)| Canal | Frec. Absoluta | Frec. Relativa | Porcentaje | Frec. Acumulada | % Acumulado |
|---|---|---|---|---|---|
| TAT | 66 | 0.5156 | 51.6% | 66 | 51.6% |
| Mayorista | 46 | 0.3594 | 35.9% | 112 | 87.5% |
| Licorera | 9 | 0.0703 | 7.0% | 121 | 94.5% |
| Supermercado | 7 | 0.0547 | 5.5% | 128 | 100.0% |
ggplot(tabla_canal, aes(x = fct_reorder(Canal, Frecuencia_Absoluta),
y = Frecuencia_Absoluta, fill = Canal)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = Frecuencia_Absoluta), hjust = -0.3, fontface = "bold") +
coord_flip() +
scale_fill_manual(values = paleta_ilv) +
labs(title = "Distribución de puntos de venta según canal",
x = "Canal", y = "Número de puntos de distribución") +
expand_limits(y = max(tabla_canal$Frecuencia_Absoluta) * 1.15)ggplot(tabla_canal, aes(x = "", y = Frecuencia_Absoluta, fill = Canal)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
scale_fill_manual(values = paleta_ilv) +
geom_text(aes(label = percent(Frecuencia_Relativa, accuracy = 0.1)),
position = position_stack(vjust = 0.5), color = "white",
fontface = "bold", size = 4) +
labs(title = "Participación porcentual por canal de distribución", fill = "Canal") +
theme_void() +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "bottom")Interpretación: el canal TAT concentra la mayor proporción de puntos de distribución (51.6%), seguido por el canal Mayorista (35.9%). Entre ambos canales agrupan cerca del 87.5% del total de puntos de venta activos, lo que evidencia una fuerte concentración comercial en estos dos canales.
tabla_ciudad <- datos %>%
count(Ciudad, name = "Frecuencia_Absoluta") %>%
arrange(desc(Frecuencia_Absoluta)) %>%
mutate(
Frecuencia_Relativa = round(Frecuencia_Absoluta / sum(Frecuencia_Absoluta), 4),
Porcentaje = percent(Frecuencia_Relativa, accuracy = 0.1),
Frecuencia_Acumulada = cumsum(Frecuencia_Absoluta),
Porcentaje_Acumulado = percent(cumsum(Frecuencia_Relativa), accuracy = 0.1)
)
kable(tabla_ciudad,
col.names = c("Ciudad", "Frec. Absoluta", "Frec. Relativa",
"Porcentaje", "Frec. Acumulada", "% Acumulado"),
caption = "Tabla de frecuencias - Variable Ciudad (orden descendente)") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
full_width = TRUE) %>%
scroll_box(height = "350px")| Ciudad | Frec. Absoluta | Frec. Relativa | Porcentaje | Frec. Acumulada | % Acumulado |
|---|---|---|---|---|---|
| Cali | 74 | 0.5781 | 57.8% | 74 | 57.8% |
| Tuluá | 13 | 0.1016 | 10.2% | 87 | 68.0% |
| Buga | 6 | 0.0469 | 4.7% | 93 | 72.7% |
| Palmira | 6 | 0.0469 | 4.7% | 99 | 77.4% |
| Cartago | 4 | 0.0312 | 3.1% | 103 | 80.5% |
| Poblado Campestre | 3 | 0.0234 | 2.3% | 106 | 82.8% |
| Buenaventura | 2 | 0.0156 | 1.6% | 108 | 84.4% |
| La Unión | 2 | 0.0156 | 1.6% | 110 | 85.9% |
| Pradera | 2 | 0.0156 | 1.6% | 112 | 87.5% |
| Alcalá | 1 | 0.0078 | 0.8% | 113 | 88.3% |
| Andalucía | 1 | 0.0078 | 0.8% | 114 | 89.0% |
| Candelaria | 1 | 0.0078 | 0.8% | 115 | 89.8% |
| Cerrito | 1 | 0.0078 | 0.8% | 116 | 90.6% |
| El Placer | 1 | 0.0078 | 0.8% | 117 | 91.4% |
| Florida | 1 | 0.0078 | 0.8% | 118 | 92.2% |
| Ginebra | 1 | 0.0078 | 0.8% | 119 | 92.9% |
| Guacarí | 1 | 0.0078 | 0.8% | 120 | 93.7% |
| La Paila | 1 | 0.0078 | 0.8% | 121 | 94.5% |
| Restrepo | 1 | 0.0078 | 0.8% | 122 | 95.3% |
| Roldanillo | 1 | 0.0078 | 0.8% | 123 | 96.1% |
| Rozo | 1 | 0.0078 | 0.8% | 124 | 96.8% |
| San Pedro | 1 | 0.0078 | 0.8% | 125 | 97.6% |
| Trujillo | 1 | 0.0078 | 0.8% | 126 | 98.4% |
| Villagorgona | 1 | 0.0078 | 0.8% | 127 | 99.2% |
| Zarzal | 1 | 0.0078 | 0.8% | 128 | 100.0% |
n_top <- min(8, nrow(tabla_ciudad) - 1)
ciudad_top <- tabla_ciudad[1:n_top, c("Ciudad", "Frecuencia_Absoluta")]
otras_suma <- sum(tabla_ciudad$Frecuencia_Absoluta[(n_top + 1):nrow(tabla_ciudad)])
ciudad_graf <- rbind(ciudad_top,
data.frame(Ciudad = "Otras ciudades",
Frecuencia_Absoluta = otras_suma))
ggplot(ciudad_graf, aes(x = fct_reorder(Ciudad, Frecuencia_Absoluta),
y = Frecuencia_Absoluta, fill = Ciudad)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = Frecuencia_Absoluta), hjust = -0.3, fontface = "bold") +
coord_flip() +
scale_fill_manual(values = rep(paleta_ilv, length.out = nrow(ciudad_graf))) +
labs(title = "Ciudades con mayor número de puntos de distribución",
subtitle = paste("Top", n_top, "ciudades; el resto se agrupa en 'Otras ciudades'"),
x = "Ciudad", y = "Número de puntos de distribución") +
expand_limits(y = max(ciudad_graf$Frecuencia_Absoluta) * 1.15)Interpretación: Cali concentra la mayor cantidad de puntos de distribución, con 74 puntos (57.8% del total), lo cual es consistente con ser el principal centro urbano y comercial del departamento. El resto de los puntos se distribuye de forma dispersa entre 24 municipios adicionales, muchos de ellos con un único punto de distribución registrado.
tabla_resp <- datos %>%
count(Responsable, name = "Frecuencia_Absoluta") %>%
arrange(desc(Frecuencia_Absoluta)) %>%
mutate(Porcentaje = percent(Frecuencia_Absoluta / sum(Frecuencia_Absoluta), accuracy = 0.1))
kable(tabla_resp, col.names = c("Responsable", "Frec. Absoluta", "Porcentaje"),
caption = "Puntos de distribución atendidos por cada responsable comercial") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))| Responsable | Frec. Absoluta | Porcentaje |
|---|---|---|
| Ana Rosa Lopera | 66 | 51.6% |
| Lina Colonia | 23 | 18.0% |
| Katherine Rengifo | 16 | 12.5% |
| Edwin Polanco | 13 | 10.2% |
| Jhenny Romero | 10 | 7.8% |
ggplot(tabla_resp, aes(x = fct_reorder(Responsable, Frecuencia_Absoluta),
y = Frecuencia_Absoluta, fill = Responsable)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = Frecuencia_Absoluta), hjust = -0.3, fontface = "bold") +
coord_flip() +
scale_fill_manual(values = paleta_ilv) +
labs(title = "Número de puntos de distribución por responsable comercial",
x = "Responsable", y = "Número de puntos") +
expand_limits(y = max(tabla_resp$Frecuencia_Absoluta) * 1.15)Interpretación: Ana Rosa Lopera es quien gestiona el mayor número de puntos de distribución (66, equivalente al 51.6% del total), lo que sugiere una carga operativa considerablemente mayor frente a los demás responsables comerciales.
Para el análisis cuantitativo se define primero una función auxiliar para calcular la moda, indicador no incluido por defecto en R base.
moda <- function(x) {
x <- x[!is.na(x)]
tabla_frec <- table(x)
as.numeric(names(tabla_frec)[tabla_frec == max(tabla_frec)])
}x <- datos$Longitud_Cliente
n_x <- sum(!is.na(x))
media_x <- mean(x, na.rm = TRUE)
mediana_x<- median(x, na.rm = TRUE)
moda_x <- paste(moda(x), collapse = ", ")
sd_x <- sd(x, na.rm = TRUE)
var_x <- var(x, na.rm = TRUE)
min_x <- min(x, na.rm = TRUE)
max_x <- max(x, na.rm = TRUE)
q1_x <- as.numeric(quantile(x, 0.25, na.rm = TRUE))
q3_x <- as.numeric(quantile(x, 0.75, na.rm = TRUE))
rango_x <- max_x - min_x
ric_x <- q3_x - q1_x
cv_x <- round(sd_x / media_x * 100, 2)
tabla_stats_cliente <- data.frame(
Indicador = c("n (valores válidos)", "Media", "Mediana", "Moda",
"Desviación estándar", "Varianza", "Mínimo", "Q1 (25%)",
"Q3 (75%)", "Máximo", "Rango", "Rango intercuartílico (RIC)",
"Coeficiente de variación (%)"),
Valor = c(n_x, round(media_x, 2), mediana_x, moda_x, round(sd_x, 2),
round(var_x, 2), min_x, q1_x, q3_x, max_x, rango_x, ric_x,
paste0(cv_x, "%"))
)
kable(tabla_stats_cliente,
caption = "Indicadores estadísticos - Longitud del nombre del cliente") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))| Indicador | Valor |
|---|---|
| n (valores válidos) | 128 |
| Media | 19.73 |
| Mediana | 19 |
| Moda | 18, 19, 20 |
| Desviación estándar | 7.93 |
| Varianza | 62.92 |
| Mínimo | 5 |
| Q1 (25%) | 14 |
| Q3 (75%) | 22.25 |
| Máximo | 44 |
| Rango | 39 |
| Rango intercuartílico (RIC) | 8.25 |
| Coeficiente de variación (%) | 40.2% |
ggplot(datos, aes(x = Longitud_Cliente)) +
geom_histogram(binwidth = 3, fill = color_principal, color = "white",
boundary = 0) +
geom_vline(xintercept = media_x, color = color_secundario,
linetype = "dashed", linewidth = 1) +
labs(title = "Distribución de la longitud del nombre del cliente",
subtitle = "La línea punteada indica la media",
x = "Número de caracteres", y = "Frecuencia (número de puntos)")ggplot(datos, aes(x = "", y = Longitud_Cliente)) +
geom_boxplot(fill = color_principal, alpha = 0.75, width = 0.35,
outlier.color = color_secundario) +
labs(title = "Diagrama de caja - Longitud del nombre del cliente",
x = "", y = "Número de caracteres") +
theme(axis.ticks.x = element_blank())Interpretación: en promedio, el nombre de los clientes registrados tiene 19.7 caracteres (mediana = 19), con una desviación estándar de 7.9 caracteres y un coeficiente de variación de 40.2%, lo que indica una dispersión alta respecto a la media. El 50% central de los nombres se encuentra entre 14 y 22.25 caracteres.
y <- datos$Longitud_Direccion
n_y <- sum(!is.na(y))
media_y <- mean(y, na.rm = TRUE)
mediana_y<- median(y, na.rm = TRUE)
moda_y <- paste(moda(y), collapse = ", ")
sd_y <- sd(y, na.rm = TRUE)
var_y <- var(y, na.rm = TRUE)
min_y <- min(y, na.rm = TRUE)
max_y <- max(y, na.rm = TRUE)
q1_y <- as.numeric(quantile(y, 0.25, na.rm = TRUE))
q3_y <- as.numeric(quantile(y, 0.75, na.rm = TRUE))
rango_y <- max_y - min_y
ric_y <- q3_y - q1_y
cv_y <- round(sd_y / media_y * 100, 2)
tabla_stats_direccion <- data.frame(
Indicador = c("n (valores válidos)", "Media", "Mediana", "Moda",
"Desviación estándar", "Varianza", "Mínimo", "Q1 (25%)",
"Q3 (75%)", "Máximo", "Rango", "Rango intercuartílico (RIC)",
"Coeficiente de variación (%)"),
Valor = c(n_y, round(media_y, 2), mediana_y, moda_y, round(sd_y, 2),
round(var_y, 2), min_y, q1_y, q3_y, max_y, rango_y, ric_y,
paste0(cv_y, "%"))
)
kable(tabla_stats_direccion,
caption = "Indicadores estadísticos - Longitud de la dirección registrada") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))| Indicador | Valor |
|---|---|
| n (valores válidos) | 126 |
| Media | 17.21 |
| Mediana | 16.5 |
| Moda | 16 |
| Desviación estándar | 4.58 |
| Varianza | 21 |
| Mínimo | 3 |
| Q1 (25%) | 15 |
| Q3 (75%) | 18.75 |
| Máximo | 50 |
| Rango | 47 |
| Rango intercuartílico (RIC) | 3.75 |
| Coeficiente de variación (%) | 26.62% |
ggplot(datos %>% filter(!is.na(Longitud_Direccion)), aes(x = Longitud_Direccion)) +
geom_histogram(binwidth = 3, fill = color_secundario, color = "white",
boundary = 0) +
geom_vline(xintercept = media_y, color = color_principal,
linetype = "dashed", linewidth = 1) +
labs(title = "Distribución de la longitud de la dirección registrada",
subtitle = "La línea punteada indica la media",
x = "Número de caracteres", y = "Frecuencia (número de puntos)")ggplot(datos %>% filter(!is.na(Longitud_Direccion)), aes(x = "", y = Longitud_Direccion)) +
geom_boxplot(fill = color_secundario, alpha = 0.75, width = 0.35,
outlier.color = color_principal) +
labs(title = "Diagrama de caja - Longitud de la dirección registrada",
x = "", y = "Número de caracteres") +
theme(axis.ticks.x = element_blank())Interpretación: las direcciones registradas tienen en promedio 17.2 caracteres (mediana = 16.5), con una desviación estándar de 4.6 caracteres y un coeficiente de variación de 26.62%. Se identificaron 2 registros sin dirección (marcados como pedidos exclusivamente por App o sin dato), los cuales fueron excluidos del cálculo.
ggplot(datos, aes(x = fct_reorder(Canal, Longitud_Cliente, .fun = median),
y = Longitud_Cliente, fill = Canal)) +
geom_boxplot(show.legend = FALSE, alpha = 0.85) +
scale_fill_manual(values = paleta_ilv) +
labs(title = "Longitud del nombre del cliente según canal de distribución",
x = "Canal", y = "Número de caracteres del nombre del cliente")resumen_canal_cliente <- datos %>%
group_by(Canal) %>%
summarise(
n = n(),
Media = round(mean(Longitud_Cliente, na.rm = TRUE), 1),
Mediana = median(Longitud_Cliente, na.rm = TRUE),
DE = round(sd(Longitud_Cliente, na.rm = TRUE), 1)
) %>%
arrange(desc(Media))
kable(resumen_canal_cliente,
col.names = c("Canal", "n", "Media", "Mediana", "Desv. Estándar"),
caption = "Longitud del nombre del cliente por canal de distribución") %>%
kable_styling(bootstrap_options = c("striped", "hover", "condensed"))| Canal | n | Media | Mediana | Desv. Estándar |
|---|---|---|---|---|
| TAT | 66 | 21.4 | 19.0 | 8.9 |
| Supermercado | 7 | 19.0 | 20.0 | 6.8 |
| Licorera | 9 | 18.9 | 20.0 | 3.8 |
| Mayorista | 46 | 17.6 | 17.5 | 6.6 |
Interpretación: el canal TAT presenta, en promedio, los nombres de cliente más largos (21.4 caracteres), lo que puede explicarse por el uso de razones sociales más descriptivas (por ejemplo, “Supermercado …” o “Distribuidora …”) frente a nombres comerciales más cortos usados en otros canales.
correlacion <- cor(datos$Longitud_Cliente, datos$Longitud_Direccion,
use = "complete.obs")
ggplot(datos, aes(x = Longitud_Cliente, y = Longitud_Direccion)) +
geom_point(color = color_principal, alpha = 0.7, size = 2) +
geom_smooth(method = "lm", se = FALSE, color = color_secundario,
linetype = "dashed") +
labs(title = "Relación entre la longitud del nombre del cliente y de la dirección",
subtitle = paste("Coeficiente de correlación de Pearson: r =",
round(correlacion, 3)),
x = "Longitud del nombre del cliente (caracteres)",
y = "Longitud de la dirección (caracteres)")Interpretación: el coeficiente de correlación obtenido fue de 0.047, lo cual indica una relación lineal prácticamente nula entre la longitud del nombre del cliente y la longitud de la dirección registrada. Esto sugiere que ambas variables se comportan de manera independiente: que un punto de venta tenga un nombre más largo no implica que su dirección también esté descrita con mayor nivel de detalle.
El canal TAT es el predominante en la red de distribución de la ILV, con 66 puntos (51.6% del total), seguido por Mayorista (35.9%). Entre ambos concentran el 87.5% de los puntos activos, mostrando una fuerte dependencia comercial en estos dos canales.
Cali es, por amplio margen, el municipio con mayor número de puntos de distribución (74, equivalente al 57.8%), mientras que el resto de los 24 municipios presentan una cobertura mucho más reducida, en su mayoría con un solo punto registrado.
El responsable comercial Ana Rosa Lopera administra la mayor carga de puntos de venta (66, 51.6%), lo que podría representar una oportunidad para evaluar el balance de cargas de trabajo entre el equipo comercial.
En cuanto a las variables cuantitativas derivadas, el nombre del cliente tiene en promedio 19.7 caracteres (CV = 40.2%) y la dirección registrada 17.2 caracteres (CV = 26.62%). La correlación entre ambas variables (0.047) resultó prácticamente nula, confirmando que el nivel de detalle registrado en cada campo depende de quién diligencia la información y no de las características del punto de venta en sí.
Se evidenció que 2 puntos de venta no cuentan con una dirección física registrada (atendidos únicamente por App u otro medio), lo cual es un hallazgo relevante para la calidad del dato y la logística de entregas.
.Rmd en RStudio..html con todo el informe.## Informe generado con R version 4.6.1 (2026-06-24 ucrt)