---
title: "Omnicanal_Aluvial"
author: "Ricardo R. Palma"
date: '2022-05-16'
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## Sostenibilidad en residuos agrícolas


Introducción a los gráficos alluvial

Este tipo de gráfico resulta ideal para trabajar los problemas de multiple fuentes u orígenes, canales y consumidores en las cadenas de abastecimiento.

Repasaremos su construcción y luego avanzaremos con un ejemplo.

```{r}
# Cargamos una biblioteca auxiliar
library(networkD3)
library(dplyr)
 

# Creamos un dataset de clase data.frame que lista la intensidad de flujos entre grupos. Crearemos los flujos entre cada origen y destino
links <- data.frame(
  source=c("grupo_A","grupo_A", "grupo_B", "grupo_C", "grupo_C", "grupo_E"), 
  target=c("grupo_C","grupo_D", "grupo_E", "grupo_F", "grupo_G", "grupo_H"), 
  value=c(2,3, 2, 3, 1, 3)
  )

# Para estos flujos necesitamos crear nodos de origen y destino. Cada entidad estará relacionada con un flujo que ya hemos creado.

nodes <- data.frame(
  name=c(as.character(links$source), 
  as.character(links$target)) %>% unique()
)

# Con el comando match de la boblioteca network3D establecemos un id pero sin usar el verdadero nombre que tiene en el dataframe. Esto es para economizar espacio y cálculo. En síntesis reformateamos las etiquetas. 

links$IDsource <- match(links$source, nodes$name)-1 
links$IDtarget <- match(links$target, nodes$name)-1
 
# Armado de la red de ploteo
p <- sankeyNetwork(Links = links, Nodes = nodes,
              Source = "IDsource", Target = "IDtarget",
              Value = "value", NodeID = "name", 
              sinksRight=FALSE)
p
```

Obtenemos los datos 

```{r ,error=TRUE}
library(readr)
Residuos_Agricolas <- read_delim("Residuos_Agricolas.csv", 
    delim = ";", escape_double = FALSE, locale = locale(decimal_mark = ",", 
        grouping_mark = "."), trim_ws = TRUE)
RA <- Residuos_Agricolas

```

```{r, error=TRUE}
library(kableExtra)
RA %>%
  kbl(caption = "Estrategias Omnicanal Residuos Agrícola") %>%
  kable_classic(full_width = F, html_font = "Cambria")
```


# Éxtio o fracaso

Intentaremos saber que residuos agrícolas han podido ser reciclados exitosamente presindiendo del canal del que se obtuvieron

```{r, error=TRUE}
library(alluvial)
library(dplyr)
RA %>% group_by(Residuo, Exito) %>% summarise(n = sum(Freq)) -> tit2d
 alluvial(tit2d[,1:2], freq=tit2d$n)

```


```{r, error=TRUE}
RA %>% group_by(Canal, Finan, Exito) %>%
 summarise(n = sum(Freq)) -> tit3d
alluvial(tit3d[,1:3], freq=tit3d$n)

```


```{r, error=TRUE}
RA %>% group_by(Canal, Finan, Residuo) %>%
 summarise(n = sum(Freq)) -> tit3d
alluvial(tit3d[,1:3], freq=tit3d$n)

```



