Uso de funciones del paquete Dplyr: ejemplo con datos de núcleos

Ejemplo de los principales verbos o funciones usando datos de porosidad y permeabilidad

Rigoberto Chandomi https://www.linkedin.com/in/rigobertochandomi/
2024-03-09

El paquete dplyr es uno de los paquetes más utilizados en R para la manipulación de datos. Proporciona un conjunto de funciones (a menudo referidas como “verbos”) que facilitan las tareas comunes de manipulación de datos, tales como la selección de columnas, filtrado de filas, reordenamiento, y agregación.

Antes de ejecutar los ejemplos vamos a cargar los datos desde un archivo CSV, estos datos corresponden a datos de núcleos de porosidad y permeabilidad, asi como su respectivo valor de radio garganta de poro y clasificación de tipo de roca.

dataN <- read.csv("DataTR.csv")

A continuación tienes una lista de los verbos más importantes de dplyr con sus descripciones y ejemplos:

1. filter()

Descripción: Se utiliza para seleccionar filas de un dataframe que cumplen con ciertas condiciones. Ejemplo: Para filtrar filas donde la columna WELL es igual a WELL_2, utilizarías:

#Filter
dataN_filtrada <- dataN %>% 
                  filter(WELL == "WELL_2")

head(dataN_filtrada)
    WELL      MD POROSITY PERMEABILITY       PTS   RT
1 WELL_2 3860.15     0.22     15600.55 110.37360 MEGA
2 WELL_2 3860.00     0.22     15913.97 108.65044 MEGA
3 WELL_2 3872.50     0.22      8682.55  76.67887 MEGA
4 WELL_2 3872.00     0.25      9786.50  75.28716 MEGA
5 WELL_2 3871.75     0.23      8775.23  73.72816 MEGA
6 WELL_2 3871.25     0.24      8751.54  72.54092 MEGA

2. select()

Descripción: Permite seleccionar y conservar solo un subconjunto específico de columnas de un dataframe. Ejemplo: Si deseas seleccionar solo las columnas WELL, MD y POROSITY de un dataframe dataN, harías:

dataN_seleccionada <- dataN %>% 
  select(WELL, MD, POROSITY)

head(dataN_seleccionada)
    WELL      MD POROSITY
1 WELL_1 4080.75     0.23
2 WELL_1 4073.35     0.23
3 WELL_1 4041.85     0.21
4 WELL_1 4074.35     0.22
5 WELL_1 4082.35     0.23
6 WELL_1 4041.35     0.21

3. arrange()

Descripción: Ordena las filas de un dataframe por una o más columnas. Ejemplo: Para ordenar el dataframe dataN por la columna MD en orden ascendente, usarías:

dataN_ordenada <- dataN %>% 
  arrange(MD)

head(dataN_ordenada)
    WELL      MD POROSITY PERMEABILITY        PTS    RT
1 WELL_2 3839.15     0.10        10.63  2.8637348 MACRO
2 WELL_2 3839.40     0.12         0.25  0.2699114 MICRO
3 WELL_2 3839.60     0.16       306.81 14.4884515  MEGA
4 WELL_2 3839.85     0.16       150.95  9.4439466 MACRO
5 WELL_2 3840.10     0.17       707.32 22.6813807  MEGA
6 WELL_2 3840.35     0.16       254.70 12.6393298  MEGA

4. mutate()

Descripción: Añade nuevas columnas al dataframe o modifica las existentes. Ejemplo: Si quieres crear una nueva columna RQI que contenga el calculo de Indice de Calidad de Roca:

dataN_mutados <- dataN %>% 
  mutate(RQI = 0.0314 * sqrt(PERMEABILITY / POROSITY))

head(dataN_mutados)
    WELL      MD POROSITY PERMEABILITY      PTS   RT      RQI
1 WELL_1 4080.75     0.23      5276.55 55.48926 MEGA 4.755988
2 WELL_1 4073.35     0.23      4359.99 49.04808 MEGA 4.323231
3 WELL_1 4041.85     0.21      3573.89 48.13268 MEGA 4.096289
4 WELL_1 4074.35     0.22      3035.33 42.32224 MEGA 3.688258
5 WELL_1 4082.35     0.23      3021.00 40.58623 MEGA 3.598662
6 WELL_1 4041.35     0.21      2392.08 38.01134 MEGA 3.351258

5. summarise() (o summarize() en inglés americano)

Descripción: Crea un resumen de estadísticas agregadas de un dataframe. Ejemplo: Para calcular la media de la columna POROSITY de un conjunto de datos, utilizarías:

dataN_media <- dataN %>% 
  summarize(media_porosidad = mean(POROSITY))

print(dataN_media)
  media_porosidad
1       0.1945567

6. group_by()

Descripción: Se utiliza en conjunto con summarise() para calcular resúmenes agrupados según una o más variables. Ejemplo: Para calcular la permeabilidad media por pozo del dataframe dataN, harías:

dataN_Pozo_Media <- dataN %>% 
  group_by(WELL) %>% 
  summarize(media_perm = mean(PERMEABILITY))

print(dataN_Pozo_Media)
# A tibble: 2 x 2
  WELL   media_perm
  <fct>       <dbl>
1 WELL_1       530.
2 WELL_2       800.

Este código primero agrupa datos por Pozo (WELL) y luego calcula la media_perm dentro de cada grupo de pozo, resultando en permeabilidad (PERMEABILITY) media por pozo

Cada uno de estos “verbos” puede ser utilizado individualmente o encadenado junto a otros mediante el operador %>% para realizar operaciones de manipulación de datos más complejas y compuestas en R.