Unidad 1 - Taller 4: la analítica de una cafetería

Taller práctico evaluable · Semana 4 · 06278-ECO

Autor/a

PhD. Eduard F. Martínez-González

1 Instrucciones generales

El caso: una cadena de cafeterías con 8 sucursales en Cali, Bogotá y Medellín te contrata para su primer análisis de datos. Te entregan el registro de 120 transacciones del primer trimestre y tres preguntas: ¿cómo va el negocio?, ¿qué sucursales jalonan y cuáles preocupan?, ¿qué harías tú? Todo lo que practicaste hoy — verbos, KPIs, gráficos — aplicado a otro negocio.

Cómo funciona este taller

  • Es individual y evaluable, y se desarrolla en el tiempo restante de la clase (⏱️ diseñado para ≈ 55 minutos).
  • Se resuelve sin la guía del profesor: todo lo necesario está en este documento, en la práctica y en la teoría. El profesor solo atiende dudas logísticas.
  • Herramienta: RStudio, dentro de tu proyecto intro_ba.

Los datos: descarga 📄 cafeteria.csv y guárdalo en la carpeta data/ de tu proyecto. Contiene 120 filas con 7 columnas: sucursal, ciudad, producto, tipo (Bebida/Alimento), precio, unidades y mes (Ene, Feb, Mar).

El entregable son tres archivos (si Intu solo acepta uno, comprímelos en un .zip):

  • 📄 apellido_nombre_taller4.R — el script con todos los puntos, comentado.
  • 🖼️ Los dos gráficos del Punto 4, exportados con ggsave() como .png.
  • 📤 Entrega: en el espacio habilitado en Intu antes de terminar la clase.
Advertencia

Reglas de juego (la rúbrica las aplica)

  1. El script debe correr completo de arriba a abajo (con cafeteria.csv en data/). Se revisa con Source: si se detiene en un error, se califica hasta esa línea. Prueba de fuego antes de entregar: rm(list = ls())Source.
  2. Ruta relativa obligatoria: los datos se leen con read.csv("data/cafeteria.csv"). Una ruta absoluta (C:/Users/...) descuenta en presentación — va contra todo lo de la semana 3.
  3. Las interpretaciones son tuyas, en comentarios de 1-2 líneas. Se evalúa que leas el resultado, no que lo parafrasees (“la tabla muestra ingresos” no dice nada; “Medellín tiene el ticket más alto pese a vender menos” sí).
  4. Uso de IA: permitido solo para explicar errores o conceptos después de intentarlo tú; prohibido pedir la solución de un punto. Declaración obligatoria al final del script.

Distribuye tu tiempo: Punto 1 ≈ 8 min · Punto 2 ≈ 10 min · Punto 3 ≈ 15 min · Punto 4 ≈ 17 min · Punto 5 ≈ 5 min.

2 Punto 1 — Setup y carga (0.5 puntos)

  1. Crea el script apellido_nombre_taller4.R en scripts/, con el encabezado estándar (nombre, código, fecha, qué hace) y el bloque de librerías (require(pacman) + p_load(dplyr, ggplot2)).
  2. Lee los datos con ruta relativa y guárdalos en el objeto cafe.
  3. Aplica la radiografía (str(), head()) y responde en un comentario: ¿cuántas observaciones y variables hay, y qué representa una fila de esta base?

3 Punto 2 — Transformaciones (1.0 punto)

Cada literal es una línea (o pipe corto) + lo que se pida en comentario:

  1. Filtra las transacciones de Cali y guárdalas en ventas_cali. En un comentario: ¿cuántas filas quedaron?
  2. Filtra las Bebidas con precio mayor a 5.000 (dos condiciones). ¿Cuántas son?
  3. Crea la columna ingreso (= precio * unidades), sobrescribiendo cafe — la usarás en todo lo que sigue.
  4. Muestra las 5 transacciones de mayor ingreso (ordena y usa head()). En un comentario: ¿qué producto domina ese top 5?

4 Punto 3 — La tabla de KPIs (1.5 puntos)

  1. El pulso global: con summarise(), calcula en una sola tabla ingreso_total, ticket_promedio y n_transacciones del trimestre.
  2. El desagregado: construye kpis_ciudad — las mismas tres métricas por ciudad, ordenadas por ingreso de mayor a menor (recuerda .groups = "drop").
  3. En un comentario de 1-2 líneas tuyas: ¿la ciudad que más ingreso genera es también la del ticket promedio más alto? ¿Qué te dice eso del tipo de negocio en cada ciudad?
  4. ¿Qué producto aparece en más transacciones? (una línea, con el atajo visto en clase).
  5. Exporta kpis_ciudad a output/kpis_ciudad.csv con write.csv() (sin nombres de fila).

5 Punto 4 — Los gráficos del dueño (1.5 puntos)

Dos gráficos, con geometrías distintas, ambos con: título que diga el mensaje (no “gráfico de…”), ejes etiquetados con unidades, un tema profesional, y exportados con ggsave() a output/. Debajo de cada uno, tu interpretación en 1-2 líneas como comentario.

  1. Obligatorio — el ranking: ingreso total por sucursal, en barras horizontales y ordenadas (son 8 nombres largos: ya sabes por qué horizontales). Pista: primero la tabla (group_by + summarise), luego reorder().
  2. A tu elección, según la pregunta que prefieras responder:
    • ¿El negocio viene creciendo? → línea del ingreso total por mes (Ene, Feb, Mar).
    • ¿Bebidas y alimentos se comportan distinto? → dispersión de precio vs. unidades coloreada por tipo.

Pista de calidad: en el gráfico (a), fíjate en los dos extremos — la sucursal líder y la más floja — porque los necesitarás en el Punto 5. Y recuerda el checklist del gráfico listo para compartir: mensaje en el título, unidades en los ejes, fuente en el caption.

6 Punto 5 — La decisión (0.5 puntos)

Cierra tu script con un comentario de 2-3 líneas escritas por ti: si fueras el dueño de la cadena, ¿qué única acción concreta tomarías el próximo mes, y qué número tuyo la respalda? (Ejemplos del tipo de acción — no los copies: cerrar o relanzar una sucursal, cambiar el menú de una ciudad, replicar una fórmula que funciona, preparar inventario para una tendencia.)

La vara de calidad: una acción específica (+ dónde, + basada en qué cifra). “Vender más” no es una decisión; “duplicar la pauta en X porque Y” sí.

7 Rúbrica de evaluación

El script que no corre completo se evalúa hasta la línea del primer error. La presentación (encabezado, puntos numerados, rutas relativas, comentarios legibles) se descuenta hasta -0.3 si dificulta la revisión.
Punto Qué se evalúa Puntos
1. Setup y carga Encabezado + librerías (0.2); ruta relativa correcta (0.2); lectura de la radiografía en comentario (0.1) 0.5
2. Transformaciones Filtro simple con conteo (0.25); filtro doble (0.25); ingreso creado y persistido (0.25); top 5 ordenado + lectura (0.25) 1.0
3. KPIs Resumen global (0.3); kpis_ciudad completo y ordenado (0.5); interpretación propia ingreso vs. ticket (0.3); producto más frecuente (0.2); export a output/ (0.2) 1.5
4. Gráficos Ranking por sucursal: horizontal, ordenado, pulido (0.6); segundo gráfico con otra geometría, pulido (0.5); ggsave() de ambos (0.2); interpretaciones propias (0.2) 1.5
5. Decisión Acción específica + cifra propia que la respalda 0.5
Total 5.0

8 Declaración de uso de IA

Cierra tu script con este bloque diligenciado (obligatorio, aunque sea para decir que no la usaste):

## ============================================
## DECLARACIÓN DE USO DE IA
## Herramienta y modelo usados: _______________ (o "No usé IA")
## La usé para: _______________________________
## Verifiqué por mi cuenta: ____________________
## ============================================

La política de siempre: la IA para entender (errores, conceptos, un detalle de sintaxis como el del separador de miles), no para resolver los puntos. En la semana 8 le daremos la vuelta — la IA escribirá análisis completos y tu trabajo será auditarlos. Para auditar, primero hay que saber hacer.