Ventas, margen y participación por categoría en seis líneas
Con R base y sin paquetes: sumar por categoría, calcular margen y participación, y ordenar de mayor a menor.
El problema
Te pasan las ventas del mes y la pregunta de siempre: qué categoría vende más, cuál deja más margen y cuánto pesa cada una. No hace falta instalar nada para contestar.
ventas <- data.frame(
categoria = c("Bebidas", "Snacks", "Bebidas", "Limpieza", "Snacks", "Bebidas"),
monto = c(120.5, 80, 210.25, 150, 45.75, 99),
costo = c(70, 52, 130, 110, 30, 61)
)
resumen <- aggregate(cbind(monto, costo) ~ categoria, data = ventas, FUN = sum)
resumen$margen_pct <- round((resumen$monto - resumen$costo) / resumen$monto * 100, 1)
resumen$participacion <- round(resumen$monto / sum(resumen$monto) * 100, 1)
resumen <- resumen[order(-resumen$monto), ]
print(resumen, row.names = FALSE)
Por qué está escrito así
- aggregate con la fórmula cbind(monto, costo) ~ categoria suma las dos columnas por cada categoría de una vez.
- Las operaciones son vectorizadas: el margen de todas las categorías se calcula en una línea, sin bucle.
- order con el signo menos ordena de mayor a menor.
- Todo es R base: corre en cualquier instalación, sin tidyverse.
Guardalo como resumen.R y corré: Rscript resumen.R. Para tus datos, reemplazá el data.frame por read.csv("ventas.csv").
aggregate descarta en silencio las filas con NA en cualquiera de las columnas. Si tu archivo tiene vacíos, el total va a dar menos sin avisar: revisá con summary(ventas) antes.
Adaptalo a tu caso con IA
El botón copia este prompt con el código pegado debajo. Reemplazá los corchetes con lo tuyo y pegalo en ChatGPT, Claude, Gemini o Copilot.
Tengo este resumen de ventas por categoría en R base. Mis datos reales están en [ARCHIVO] con estas columnas: [COLUMNAS]. Adaptalo para leer el archivo, tratar los valores vacíos de forma explícita (decime cuántas filas quedan afuera y por qué), agregar la comparación contra [PERÍODO ANTERIOR] y exportar el resultado a CSV. Sin paquetes externos salvo que sea imprescindible, y decime cuál.
Ejemplo escrito y revisado a mano.
Comentarios
Todavía no hay comentarios. El primero puede ser el tuyo.
¿Lo adaptaste a algo tuyo?
Contame qué resolviste con esto, o qué le faltó.