---
title: "Resultados de Análisis de Suelos - Cacao (establecido) en Colombia"
output:
flexdashboard::flex_dashboard:
theme:
bg: "#101010"
fg: "#FDF7F7"
primary: "#4daff9"
base_font:
google: Prompt
code_font:
google: JetBrains Mono
orientation: columns
vertical_layout: fill
source_code: embed
---
```{r setup, include=FALSE}
# Bibliotecas
library(flexdashboard)
library(tidyverse)
library(janitor)
library(plotly)
library(visdat)
library(DT)
library(corrr)
library(splines)
# Nombres de variables
nombres <- c(
"depto",
"mpio",
"cultivo",
"estado",
"tiempo_estab",
"topografia",
"drenaje",
"riego",
"fertilizantes",
"fecha_analisis",
"ph_agua_suelo",
"materia_org",
"fosforo",
"azufre",
"acidez",
"aluminio",
"calcio",
"magnesio",
"potasio",
"sodio",
"cice",
"conductividad",
"hierro_olsen",
"cobre",
"manganeso",
"zinc",
"boro",
"hierro_doble",
"cobre_doble",
"manganeso_doble",
"zinc_doble"
)
# Datos de suelos
suelos <-
read_csv("Resultados_de_An_lisis_de_Laboratorio_Suelos_en_Colombia.csv",
na = "ND") %>%
select(-c(numfila, Secuencial)) %>%
set_names(nombres) %>%
mutate(
across(c(depto, mpio), str_to_title),
across(
c(cultivo, estado, tiempo_estab, topografia, drenaje, riego),
str_to_sentence
),
across(
c(
fosforo,
calcio,
magnesio,
potasio,
sodio,
hierro_olsen,
cobre,
manganeso,
zinc,
cobre_doble,
manganeso_doble,
zinc_doble
),
~ str_replace_all(
string = .,
pattern = ",",
replacement = "."
)
),
across(
c(
fosforo,
calcio,
magnesio,
potasio,
sodio,
hierro_olsen,
cobre,
manganeso,
zinc,
cobre_doble,
manganeso_doble,
zinc_doble
),
~ str_replace_all(
string = .,
pattern = "<",
replacement = ""
)
),
across(
c(
fosforo,
calcio,
magnesio,
potasio,
sodio,
hierro_olsen,
cobre,
manganeso,
zinc,
cobre_doble,
manganeso_doble,
zinc_doble
),
as.numeric
)
) %>%
select(-c(fecha_analisis, hierro_doble, cobre_doble, manganeso_doble, zinc_doble))
# Configuración de tema
theme_set(theme_minimal())
thematic::thematic_rmd()
```
Column {data-width=540 .tabset}
-----------------------------------------------------------------------
### Top 10
```{r}
suelos %>%
count(cultivo, sort = TRUE) %>%
slice(1:10) %>%
ggplot(aes(x = reorder(cultivo, n), y = n, label = n)) +
geom_col() +
geom_label(size = 3) +
labs(x = "", y = "n") +
coord_flip()
```
### Distribuciones
```{r}
suelos %>%
filter(cultivo == "Cacao") %>%
filter(estado == "Establecido") %>%
filter(ph_agua_suelo < 10 ) %>%
select(where(is.numeric)) %>%
pivot_longer(cols = everything()) %>%
ggplot(aes(x = value)) +
facet_wrap(~name, scales = "free", ncol = 5) +
geom_density(fill = "firebrick2", alpha = 0.5) +
scale_x_log10()
```
### Correlaciones - Cacao
```{r}
suelos %>%
filter(cultivo == "Cacao") %>%
filter(estado == "Establecido") %>%
filter(ph_agua_suelo < 10 ) %>%
select(where(is.numeric)) %>%
correlate(method = "spearman") %>%
network_plot()
```
### Correlaciones - Pastos
```{r}
suelos %>%
filter(cultivo == "Pastos") %>%
filter(estado == "Establecido") %>%
filter(ph_agua_suelo < 10 ) %>%
select(where(is.numeric)) %>%
correlate(method = "spearman") %>%
network_plot()
```
### pH vs Calcio
```{r}
suelos %>%
filter(cultivo == "Cacao") %>%
filter(estado == "Establecido") %>%
filter(ph_agua_suelo < 10) %>%
filter(calcio < 100) %>%
ggplot(aes(x = ph_agua_suelo, y = calcio)) +
geom_point(alpha = 0.1) +
scale_x_log10() +
scale_y_log10() +
geom_smooth(method = "lm", se = FALSE, color = "green") +
geom_smooth(method = "gam",
formula = y ~ ns(x, df = 3),
color = "red",
se = FALSE) +
geom_smooth(method = "gam",
formula = y ~ ns(x, df = 150),
color = "yellow",
se = FALSE) +
labs(x = "pH", y = "Calcio",
title = "Lineal o no lineal?",
subtitle = "¿Complejidad vs Interpretación?")
```
### Distancias
### Clúster
### Componentes Principales
Column {data-width=460}
-----------------------------------------------------------------------
### Valores ausentes
```{r, fig.width=9}
suelos %>%
vis_miss(warn_large_data = FALSE)
```
### Resumen Descriptivo pH - Cacao por departamento
```{r}
suelos %>%
filter(cultivo == "Cacao") %>%
group_by(depto) %>%
summarise(
promedio = mean(ph_agua_suelo, na.rm = TRUE),
mediana = median(ph_agua_suelo, na.rm = TRUE),
desvEst = sd(ph_agua_suelo, na.rm = TRUE),
minimo = min(ph_agua_suelo, na.rm = TRUE),
maximo = max(ph_agua_suelo, na.rm = TRUE),
percentil5 = quantile(ph_agua_suelo, na.rm = TRUE, probs = 0.05),
percentil95 = quantile(ph_agua_suelo, na.rm = TRUE, probs = 0.95),
N = n()
) %>%
ungroup() %>%
mutate(across(where(is.numeric), round, digits = 2)) %>%
datatable(rownames = FALSE)
```