library(readxl)
library(dplyr)
base1<-read_excel("C:/Users/cm695/OneDrive/Desktop/Datos Eva alma/Base unificada.xlsx")
head(base1,10)
## # A tibble: 10 × 44
## `Día Recepción` Documento `Segunda Guia` `Nro Pesaje` Planta Lote
## <dttm> <dbl> <dbl> <chr> <chr> <dbl>
## 1 2025-08-01 00:00:00 103375 NA 98885 MPPATPNP 1.06e13
## 2 2025-08-01 00:00:00 103377 NA 98891 MPPATPNP 1.06e13
## 3 2025-08-01 00:00:00 1414052 NA 98916 MPPATPNP 1.06e13
## 4 2025-08-01 00:00:00 1414053 NA 98916 MPPATPNP 1.06e13
## 5 2025-08-01 00:00:00 71789 NA 98920 MPPATPNP 1.06e13
## 6 2025-08-01 00:00:00 71793 NA 98919 MPPATPNP 1.06e13
## 7 2025-08-01 00:00:00 140116 NA 98915 MPPATPNP 1.06e13
## 8 2025-08-01 00:00:00 56572 NA 98905 MPPATPNP 1.06e13
## 9 2025-08-01 00:00:00 56570 NA 98906 MPPATPNP 1.06e13
## 10 2025-08-01 00:00:00 56554 NA 98904 MPPATPNP 1.06e13
## # ℹ 38 more variables: `Numero articulo` <chr>, Descripción <chr>,
## # Proveedor <dbl>, `Razon Social` <chr>, `Codigo sucursal Origen` <dbl>,
## # `Nombre Sucursal Origen` <chr>, `Patente Vehiculo` <chr>,
## # `Acoplado Vehiculo` <chr>, Embarcación <chr>, Muelle <chr>, Tipo <chr>,
## # `Fecha Salida Planta` <dttm>, `Fecha 2da Guia` <dttm>,
## # `Hora Salida Planta` <chr>, BINS500 <dbl>, BINS1000 <dbl>, `TN Guia` <dbl>,
## # Toneladas <dbl>, `Cant Vale` <dbl>, `Hum Origen` <dbl>, …
# Instalar librerías si no las tienes (solo necesitas hacerlo una vez)
if(!require(tidyverse)) install.packages("tidyverse")
library(tidyverse)
# Asumimos que tu data frame se llama 'base1'
# 1. Procesamiento y Limpieza de Datos
datos_grafico <- base1 %>%
mutate(
# Estandarizar texto para evitar errores de duplicados
Origen = toupper(trimws(`Nombre Sucursal Origen`)),
Destino = toupper(trimws(Planta)),
Tipo_Medio = toupper(trimws(Tipo)),
# Lógica para determinar Tipo de Transporte:
# Si hay dato en 'Embarcación', es Marítimo, si no, Terrestre.
Tipo_Transporte = ifelse(!is.na(Embarcación) & Embarcación != "",
"Maritimo",
"Terrestre")
) %>%
# Agrupar para calcular la frecuencia
group_by(Origen, Tipo_Transporte, Tipo_Medio, Destino) %>%
summarise(Frecuencia = n(), .groups = 'drop')
# 2. Filtro de Top Orígenes (Opcional pero recomendado para legibilidad)
# Seleccionamos los 20 orígenes con más movimientos en total
top_origenes <- datos_grafico %>%
group_by(Origen) %>%
summarise(Total = sum(Frecuencia)) %>%
top_n(20, Total) %>%
pull(Origen)
datos_filtrados <- datos_grafico %>%
filter(Origen %in% top_origenes)
# 3. Generación del Gráfico
ggplot(datos_filtrados, aes(x = reorder(Origen, Frecuencia), y = Frecuencia, fill = Destino)) +
geom_bar(stat = "identity") +
# Dividir el gráfico en paneles por Transporte y Medio para facilitar el análisis
facet_grid(Tipo_Transporte ~ Tipo_Medio, scales = "free_y", space = "free_y") +
coord_flip() + # Barras horizontales para leer mejor los nombres
labs(
title = "Distribución de Frecuencia por Origen, Transporte y Medio",
subtitle = "Análisis de los 20 Orígenes más frecuentes",
x = "Origen",
y = "Frecuencia (N° de Registros)",
fill = "Destino (Planta)"
) +
theme_minimal() +
theme(
strip.background = element_rect(fill = "#f0f0f0", color = NA),
strip.text = element_text(face = "bold", size = 10),
legend.position = "bottom"
)

# 1. Cargar librerías
library(readr)
library(dplyr)
library(ggplot2)
library(lubridate)
# 2. Cargar la base de datos en el objeto 'Base2'
# Asegúrate de que el archivo .csv esté en tu carpeta de trabajo
Base1 <- read_csv(file.choose())
## Multiple files in zip: reading '[Content_Types].xml'
## Rows: 1 Columns: 1
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# 3. Procesamiento de datos
# - Convertimos la fecha
# - Filtramos SOLO el mes de Octubre (Mes 10)
# - Agrupamos por Día para contar cuántos viajes hubo cada día
Data_Octubre <- base1 %>%
mutate(Fecha = as.Date(`Día Recepción`)) %>% # Convertir a fecha
filter(!is.na(Fecha)) %>% # Eliminar vacíos
filter(month(Fecha) == 10) %>% # FILTRO CLAVE: Solo Octubre
group_by(Fecha) %>%
summarise(Cantidad_Viajes = n()) # Conteo diario
# 4. Generar el Gráfico con Línea de Tendencia
ggplot(Data_Octubre, aes(x = Fecha, y = Cantidad_Viajes)) +
geom_point(color = "darkred", size = 3) + # Puntos diarios (reales)
geom_smooth(method = "lm", color = "blue", se = TRUE) + # Línea de tendencia lineal
labs(
title = "Tendencia de Operaciones",
subtitle = "Análisis de frecuencia diaria",
x = "Día del mes",
y = "Cantidad de Viajes"
) +
theme_minimal() +
scale_x_date(date_labels = "%d-%b", date_breaks = "3 days") # Formato eje X
## `geom_smooth()` using formula = 'y ~ x'
