# VARIABLE CUALITATIVA NOMINAL: TIPO DE EXTRACCIÓN
# Proyecto: Producción de pozos de gas y petróleo no convencional
# Grupo – Carrera de Petróleos
# 2026
# =========================================================
# 1. CARGA Y PREPARACIÓN DE LOS DATOS
# =========================================================
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
library(gt)
# Lectura del archivo CSV
datos <- read_delim(
"produccin-de-pozos-de-gas-y-petrleo-no-convencional.csv",
delim = ";"
)
## Warning: One or more parsing issues, call `problems()` on your data frame for details,
## e.g.:
## dat <- vroom(...)
## problems(dat)
## Rows: 400759 Columns: 40
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (27): idempresa, prod_pet, prod_gas, prod_agua, tef, tipoextraccion, ti...
## dbl (10): anio, mes, idpozo, iny_agua, iny_gas, iny_co2, iny_otro, vida_uti...
## lgl (2): rectificado, habilitado
## dttm (1): fechaingreso
##
## ℹ 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.
# =========================================================
# 2. CONSOLIDACIÓN DE LAS CATEGORÍAS DE EXTRACCIÓN
# =========================================================
datos <- datos %>%
mutate(
tipoextraccion_consol = case_when(
tipoextraccion %in% c("Fracking", "Hidráulica") ~
"Extracción hidráulica",
tipoextraccion %in% c("Horizontal", "Perforación horizontal") ~
"Perforación horizontal",
tipoextraccion %in% c("Vertical", "Perforación vertical") ~
"Perforación vertical",
tipoextraccion %in% c("Mixta", "Combinada") ~
"Extracción mixta",
tipoextraccion %in% c("Otra", "Desconocida", "NA") ~
"Otros tipos de extracción",
TRUE ~ tipoextraccion
)
)
# =========================================================
# 3. TABLA DE DISTRIBUCIÓN DE FRECUENCIAS
# =========================================================
# 3.1. Cálculo de frecuencias
TDFExtraccion <- datos %>%
filter(!is.na(tipoextraccion_consol)) %>%
count(tipoextraccion_consol, name = "ni") %>%
arrange(ni) %>%
mutate(
hi = (ni / sum(ni)) * 100
)
# =========================================================
# 3.2. TABLA DE FRECUENCIAS
# =========================================================
TDFExtraccion_total <- TDFExtraccion %>%
add_row(
tipoextraccion_consol = "Total",
ni = sum(TDFExtraccion$ni),
hi = sum(TDFExtraccion$hi)
)
TDFExtraccion_total
## # A tibble: 12 × 3
## tipoextraccion_consol ni hi
## <chr> <int> <dbl>
## 1 Cavidad Progresiva 5 0.00125
## 2 Pistoneo (Swabbing) 13 0.00325
## 3 Otros Tipos de Extracción 92 0.0230
## 4 Jet Pump 98 0.0245
## 5 Electrosumergible 247 0.0617
## 6 Bombeo Hidráulico 334 0.0835
## 7 Gas Lift 13666 3.42
## 8 Sin Sistema de Extracción 17589 4.40
## 9 Bombeo Mecánico 43280 10.8
## 10 Plunger Lift 66050 16.5
## 11 Surgencia Natural 258784 64.7
## 12 Total 400158 100
# =========================================================
# 3.3. PRESENTACIÓN DE LA TABLA
# =========================================================
tabla_presentacion <- TDFExtraccion_total %>%
mutate(
hi = round(hi, 4)
)
tabla_presentacion %>%
gt() %>%
tab_header(
title = md("**Tabla Nro. 1**"),
subtitle = md("Distribución de frecuencias de los tipos de extracción
utilizados en pozos de gas y petróleo no convencional")
) %>%
cols_label(
tipoextraccion_consol = "Tipo de extracción",
ni = "Frecuencia absoluta (ni)",
hi = "Frecuencia relativa (%)"
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo – Carrera de Petróleos")
) %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body(rows = tipoextraccion_consol == "Total")
)
| Tabla Nro. 1 |
| Distribución de frecuencias de los tipos de extracción
utilizados en pozos de gas y petróleo no convencional |
| Tipo de extracción |
Frecuencia absoluta (ni) |
Frecuencia relativa (%) |
| Cavidad Progresiva |
5 |
0.0012 |
| Pistoneo (Swabbing) |
13 |
0.0032 |
| Otros Tipos de Extracción |
92 |
0.0230 |
| Jet Pump |
98 |
0.0245 |
| Electrosumergible |
247 |
0.0617 |
| Bombeo Hidráulico |
334 |
0.0835 |
| Gas Lift |
13666 |
3.4152 |
| Sin Sistema de Extracción |
17589 |
4.3955 |
| Bombeo Mecánico |
43280 |
10.8157 |
| Plunger Lift |
66050 |
16.5060 |
| Surgencia Natural |
258784 |
64.6705 |
| Total |
400158 |
100.0000 |
| Elaborado por: Grupo – Carrera de Petróleos |
# =========================================================
# DATOS PARA GRÁFICOS
# =========================================================
tabla_graficos <- tabla_presentacion %>%
filter(tipoextraccion_consol != "Total") %>%
arrange(ni)
# =========================================================
# 4. GRÁFICOS DE BARRAS
# =========================================================
# 4.1. Frecuencia absoluta
par(mar = c(12, 5, 4, 2))
barplot(
tabla_graficos$ni,
names.arg = tabla_graficos$tipoextraccion_consol,
las = 2,
col = "steelblue",
main = "Gráfica 1: Frecuencia absoluta de los tipos
de extracción en pozos no convencionales",
ylab = "Número de registros",
xlab = "",
cex.names = 0.75,
cex.axis = 0.75
)
mtext(
"Tipo de extracción",
side = 1,
line = 10
)

# =========================================================
# 4.2. Frecuencia relativa
# =========================================================
par(mar = c(12, 5, 4, 2))
barplot(
tabla_graficos$hi,
names.arg = tabla_graficos$tipoextraccion_consol,
las = 2,
col = "skyblue",
main = "Gráfica 2: Frecuencia relativa de los tipos
de extracción en pozos no convencionales",
ylab = "Porcentaje (%)",
xlab = "",
ylim = c(0, max(tabla_graficos$hi) + 5),
cex.names = 0.75,
cex.axis = 0.75
)
mtext(
"Tipo de extracción",
side = 1,
line = 10
)

# =========================================================
par(mar = c(5, 4, 4, 10), xpd = TRUE)
colores <- c(
"#1f78b4",
"#33a02c",
"#e31a1c",
"#ff7f00",
"#6a3d9a"
)
pie(
tabla_graficos$hi,
labels = NA,
col = colores,
main = "Gráfica 3: Distribución porcentual de los tipos
de extracción (diagrama circular)"
)
legend(
x = 1,
y = 0.5,
legend = paste0(
tabla_graficos$tipoextraccion_consol,
" (", round(tabla_graficos$hi, 2), "%)"
),
fill = colores,
cex = 0.8,
bty = "n"
)

par(xpd = FALSE)
# =========================================================
# 6. INDICADORES ESTADÍSTICOS
# =========================================================
# 6.1. Moda
indice_moda <- which.max(tabla_graficos$ni)
moda_categoria <- tabla_graficos$tipoextraccion_consol[indice_moda]
moda_ni <- tabla_graficos$ni[indice_moda]
moda_hi <- round(tabla_graficos$hi[indice_moda], 4)
# =========================================================
# 6.2. TABLA RESUMEN DE INDICADORES
# =========================================================
tabla_resumen <- data.frame(
Variable = "Tipo de extracción",
Indicador = "Moda",
Resultado = paste0(
moda_categoria,
" (", moda_ni,
" registros, ",
moda_hi, "%)"
)
)
tabla_resumen %>%
gt() %>%
tab_header(
title = md("**Tabla Nro. 2**"),
subtitle = md("Indicador estadístico del tipo de extracción
en pozos no convencionales")
) %>%
cols_label(
Variable = "Variable analizada",
Indicador = "Indicador estadístico",
Resultado = "Resultado"
) %>%
tab_source_note(
source_note = md("Elaborado por: Grupo – Carrera de Petróleos")
) %>%
opt_all_caps() %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_body()
)
| Tabla Nro. 2 |
| Indicador estadístico del tipo de extracción
en pozos no convencionales |
| Variable analizada |
Indicador estadístico |
Resultado |
| Tipo de extracción |
Moda |
Surgencia Natural (258784 registros, 64.6705%) |
| Elaborado por: Grupo – Carrera de Petróleos |
# =========================================================
# 7. CONCLUSIÓN
# =========================================================
cat(
"El análisis estadístico de la variable cualitativa nominal ",
"'tipo de extracción' permitió identificar la categoría más ",
"frecuente dentro de la base de datos analizada. La moda corresponde a ",
moda_categoria,
", con un total de ", moda_ni,
" registros, equivalentes al ",
moda_hi,
"% del total de observaciones."
)
## El análisis estadístico de la variable cualitativa nominal 'tipo de extracción' permitió identificar la categoría más frecuente dentro de la base de datos analizada. La moda corresponde a Surgencia Natural , con un total de 258784 registros, equivalentes al 64.6705 % del total de observaciones.