3 DIAGRAMA DE PIPER
María Victoria López 1
Sofía Carolina Carrasco 2
3.2 Instalación
hydrogeo se encuentra disponible en el repositorio CRAN. Para instalar el paquete se utiliza la sentencia install.packages("hydrogeo")
. Luego, se debe llamar el paquete en el entorno de trabajo:
3.3 Cargar los datos en R
Se va a trabajar con dos muestras de agua. Primero se crean objetos que contendrán los valores correspondientes al mismo, como por ejemplo, Muestra
que contiene los siguientes valores c(Villavicencio y Glaciar)
.
3.4 Creación de data.frame
Se crea una base de datos llamada Aguas
con los objetos creados anteriormente utilizando la función data.frame
.
## Muestra Ca Mg Na K Cl SO4 CO3 HCO3
## 1 Villavicencio 2.00 0.33 0.30 1.15 1.97 0.31 0.32 1.30
## 2 Glaciar 2.18 3.73 4.78 0.12 0.72 2.87 0.35 6.13
## 'data.frame': 2 obs. of 9 variables:
## $ Muestra: chr "Villavicencio" "Glaciar"
## $ Ca : num 2 2.18
## $ Mg : num 0.33 3.73
## $ Na : num 0.3 4.78
## $ K : num 1.15 0.12
## $ Cl : num 1.97 0.72
## $ SO4 : num 0.31 2.87
## $ CO3 : num 0.32 0.35
## $ HCO3 : num 1.3 6.13
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'tidyr' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## Warning: package 'stringr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ───────────────
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## 'data.frame': 2 obs. of 9 variables:
## $ Muestra: Factor w/ 2 levels "Glaciar","Villavicencio": 2 1
## $ Ca : num 2 2.18
## $ Mg : num 0.33 3.73
## $ Na : num 0.3 4.78
## $ K : num 1.15 0.12
## $ Cl : num 1.97 0.72
## $ SO4 : num 0.31 2.87
## $ CO3 : num 0.32 0.35
## $ HCO3 : num 1.3 6.13
3.5 ¿Las muestras son fiables?
Sí el error calculado en % es \(<=5\) % las muestras son fiables. Para obtener el error hacemos uso de la library(tidyverse)
.
library(tidyverse)
Aguas %>%
group_by(Muestra) %>%
summarise("Total Cationes"=sum(Ca,Mg,Na,K),
"Total Aniones"=sum(HCO3,CO3,SO4,Cl),
Error=round(abs((`Total Cationes` - `Total Aniones`)/(`Total Cationes` + `Total Aniones`)*100),2),
Confiable=if(Error<5){mje="SÍ"}else{mje="NO"})
## # A tibble: 2 × 5
## Muestra `Total Cationes` `Total Aniones` Error Confiable
## <fct> <dbl> <dbl> <dbl> <chr>
## 1 Glaciar 10.8 10.1 3.54 SÍ
## 2 Villavicencio 3.78 3.9 1.56 SÍ
3.6 Funciones
3.6.1 toPercent{Hydrogeo}
La función toPorcent transforma los iones principales en porcentaje del total de iones principales. Trabaja con una list o data.frame con las siguientes columnas: Ca, Mg, Na, K, Cl, SO4, CO3 y HCO3.
## Warning: package 'hydrogeo' was built under R version 4.2.3
## Muestra Ca Mg Na K Cl SO4
## 1 Villavicencio 52.91005 8.730159 7.936508 30.423280 50.51282 7.948718
## 2 Glaciar 20.16651 34.505088 44.218316 1.110083 7.14995 28.500497
## CO3 HCO3
## 1 8.205128 33.33333
## 2 3.475670 60.87388
#Chequeamos que la suma de los iones sea igual a 100.
library(tidyverse)
c<-b %>%
group_by(Muestra) %>%
summarise("Suma Total Cationes"=sum(Ca,Mg,Na,K),
"Suma Total Aniones"=sum(HCO3,CO3,Cl,SO4))
c
## # A tibble: 2 × 3
## Muestra `Suma Total Cationes` `Suma Total Aniones`
## <fct> <dbl> <dbl>
## 1 Glaciar 100 100
## 2 Villavicencio 100 100
#Función piper{hydrogeo}
#Objeto con la función piper permite crear el Diagrama de Piper
f <- piper(b)
b
## Muestra Ca Mg Na K Cl SO4
## 1 Villavicencio 52.91005 8.730159 7.936508 30.423280 50.51282 7.948718
## 2 Glaciar 20.16651 34.505088 44.218316 1.110083 7.14995 28.500497
## CO3 HCO3
## 1 8.205128 33.33333
## 2 3.475670 60.87388
#Rojo:Villavicencio
#Azul:Glaciar
#Cambiar colores (pt.col) y símbolos (pt.pch) para diferenciar las muestras de agua
f@pt.col=c("red","blue")
f@pt.pch=c(20,20)
plot(f,main="Diagrama de Piper",cex=2,cex.lab=1)
## [1] TRUE
3.6.2 pt.pch
## Trabajar con meq/L
# Transformar mg/L a meq/L
# Creación de objetos
Muestra <- factor(c("Villavicencio","Glaciar"))
Ca <- c(2.00,2.18)
Mg <- c(0.33,3.73)
Na <- c(0.30,4.78)
K <- c(1.15,0.12)
Cl <- c(1.97,0.72)
SO4 <- c(0.31,2.87)
# Aclaración: es NO3 pero se coloca el campo CO3 para trabajar con el paquete hydrogeo
CO3 <- c(0.32,0.35)
HCO3 <- c(1.30,6.13)
# meq/L
data <- data.frame(Ca,Mg,Na,K,Cl,SO4,CO3,HCO3,Muestra)
str(data)
## 'data.frame': 2 obs. of 9 variables:
## $ Ca : num 2 2.18
## $ Mg : num 0.33 3.73
## $ Na : num 0.3 4.78
## $ K : num 1.15 0.12
## $ Cl : num 1.97 0.72
## $ SO4 : num 0.31 2.87
## $ CO3 : num 0.32 0.35
## $ HCO3 : num 1.3 6.13
## $ Muestra: Factor w/ 2 levels "Glaciar","Villavicencio": 2 1
# ¿Muestra fiable?
library(tidyverse)
data %>%
group_by(Muestra) %>%
summarise("Suma de cationes"=num(sum(Ca,Mg,Na,K)),
"Suma de aniones"=num(sum(Cl,SO4,CO3,HCO3)))->Data
Data %>%
group_by(Muestra) %>%
summarise(Error=abs(((`Suma de cationes`- `Suma de aniones`)/
(`Suma de cationes`+ `Suma de aniones`)) *100),
Confiable=if(Error<5){mje="SÍ"}else{mje="NO"})
## # A tibble: 2 × 3
## Muestra Error Confiable
## <fct> <num> <chr>
## 1 Glaciar 3.54 SÍ
## 2 Villavicencio 1.56 SÍ
## Ca Mg Na K Cl SO4 CO3 HCO3
## 1 52.91005 8.730159 7.936508 30.423280 50.51282 7.948718 8.205128 33.33333
## 2 20.16651 34.505088 44.218316 1.110083 7.14995 28.500497 3.475670 60.87388
## Muestra
## 1 Villavicencio
## 2 Glaciar
# Comprobar que la suma de cationes y aniones sea 100
Porcentaje %>%
group_by(Muestra) %>%
summarise(Suma_cat=Ca+Mg+Na+K,
Suma_ani=Cl+SO4+CO3+HCO3)
## # A tibble: 2 × 3
## Muestra Suma_cat Suma_ani
## <fct> <dbl> <dbl>
## 1 Glaciar 100 100
## 2 Villavicencio 100 100
# Sí trabajas desde R base debes establecer la ruta de acceso
#setwd("C:/Users/hinau/OneDrive/Documentos/VICKIE/Intercátedra/B_L_CURSO")
source("ggplot_Piper.R")
piper <- transform_piper_data(Ca =Porcentaje$Ca,
Mg =Porcentaje$Mg,
Cl=Porcentaje$Cl,
SO4 =Porcentaje$SO4,
name=Porcentaje$Muestra)
piper
## observation x y
## 1 Villavicencio 42.72487 7.560579
## 2 Glaciar 62.58094 29.882441
## 3 Villavicencio 174.48718 6.883828
## 4 Glaciar 141.40020 24.682285
## 5 Villavicencio 108.41066 121.332319
## 6 Glaciar 100.48942 95.542203
## observation x y Ca Mg Na K
## 1 Glaciar 62.58094 29.882441 20.16651 34.505088 44.218316 1.110083
## 2 Glaciar 141.40020 24.682285 20.16651 34.505088 44.218316 1.110083
## 3 Glaciar 100.48942 95.542203 20.16651 34.505088 44.218316 1.110083
## 4 Villavicencio 42.72487 7.560579 52.91005 8.730159 7.936508 30.423280
## 5 Villavicencio 174.48718 6.883828 52.91005 8.730159 7.936508 30.423280
## 6 Villavicencio 108.41066 121.332319 52.91005 8.730159 7.936508 30.423280
## Cl SO4 CO3 HCO3
## 1 7.14995 28.500497 3.475670 60.87388
## 2 7.14995 28.500497 3.475670 60.87388
## 3 7.14995 28.500497 3.475670 60.87388
## 4 50.51282 7.948718 8.205128 33.33333
## 5 50.51282 7.948718 8.205128 33.33333
## 6 50.51282 7.948718 8.205128 33.33333
## Warning: Using `size` aesthetic for lines was deprecated in
## ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see
## where this warning was generated.