2. Carga de Datos
#### DATASET ####
# NOTA: no se usa setwd(). Al hacer Knit, RStudio ya usa como carpeta
# de trabajo la misma carpeta donde está guardado este archivo .Rmd.
# Simplemente coloca el CSV original (sin renombrar) en esa misma carpeta.
archivo_csv <- "produccin-de-pozos-de-gas-y-petrleo-no-convencional.csv"
# Diagnóstico: si el archivo no está en la carpeta, avisa claramente
# en vez de dar un error críptico de conexión.
if (!file.exists(archivo_csv)) {
stop("No se encontró '", archivo_csv, "' en esta carpeta.\n",
"Archivos que SÍ están en esta carpeta: ",
paste(list.files(), collapse = ", "))
}
Datos <- read.csv(archivo_csv, sep = ";", fileEncoding = "UTF-8-BOM")
# Estructura de los datos
str(Datos)
## 'data.frame': 400759 obs. of 40 variables:
## $ idempresa : chr "YSUR" "YSUR" "YSUR" "YSUR" ...
## $ anio : int 2018 2015 2017 2018 2015 2017 2018 2016 2017 2018 ...
## $ mes : int 1 1 1 1 1 1 1 1 1 1 ...
## $ idpozo : int 132771 131719 145330 132770 136137 131430 132769 135206 131429 132738 ...
## $ prod_pet : chr "7.212" "5.240" "0.00" "3.322" ...
## $ prod_gas : chr "510.173" "1.879.820" "0.00" "101.733" ...
## $ prod_agua : chr "0.34" "1.590" "0.00" "14.2" ...
## $ iny_agua : chr "0" "0.000" "0.00" "0" ...
## $ iny_gas : chr "0" "0.000" "0.00" "0" ...
## $ iny_co2 : num 0 0 0 0 0 0 0 0 0 0 ...
## $ iny_otro : num 0 0 0 0 0 0 0 0 0 0 ...
## $ tef : chr "30.15" "31.000" "0.00" "31" ...
## $ vida_util : chr "" "" "" "" ...
## $ tipoextraccion : chr "Surgencia Natural" "Surgencia Natural" "Sin Sistema de Extracción" "Surgencia Natural" ...
## $ tipoestado : chr "Extracción Efectiva" "Extracción Efectiva" "En Estudio" "Extracción Efectiva" ...
## $ tipopozo : chr "Gasífero" "Gasífero" "Otro tipo" "Gasífero" ...
## $ observaciones : chr "" "" "" "" ...
## $ fechaingreso : chr "2018-02-10 08:37:14.717426" "2015-02-26 13:35:35.533458" "2017-02-16 13:45:37.233373" "2018-02-10 08:37:14.717426" ...
## $ rectificado : chr "f" "f" "f" "f" ...
## $ habilitado : chr "t" "t" "t" "t" ...
## $ idusuario : int 444 5 444 444 5 444 444 5 444 444 ...
## $ empresa : chr "YSUR ENERGÍA ARGENTINA S.R.L." "YSUR ENERGÍA ARGENTINA S.R.L." "YSUR ENERGÍA ARGENTINA S.R.L." "YSUR ENERGÍA ARGENTINA S.R.L." ...
## $ sigla : chr "APA.RN.EFO-126(d)" "AEA.NQ.Gu-1176d" "APA.Nq.Hua.x-1" "APA.RN.EFO-122(d)" ...
## $ formprod : chr "LAJA" "PREC" "VMUT" "LAJA" ...
## $ profundidad : chr "3820" "2592" "4100" "3814" ...
## $ formacion : chr "lajas" "precuyo" "vaca muerta" "lajas" ...
## $ idareapermisoconcesion: chr "FEO" "NDD" "X009" "FEO" ...
## $ areapermisoconcesion : chr "ESTACION FERNANDEZ ORO" "AL NORTE DE LA DORSAL" "HUACALERA" "ESTACION FERNANDEZ ORO" ...
## $ idareayacimiento : chr "Z155" "GUA" "Y325" "Z155" ...
## $ areayacimiento : chr "ESTACION FERNANDEZ ORO" "GUANACO" "HUACALERA" "ESTACION FERNANDEZ ORO" ...
## $ cuenca : chr "NEUQUINA" "NEUQUINA" "NEUQUINA" "NEUQUINA" ...
## $ provincia : chr "Rio Negro" "Neuquén" "Neuquén" "Rio Negro" ...
## $ coordenadax : chr "-6.783.808.193" "-6.924.999.839" "-6.979.045.203" "-6.786.739.055" ...
## $ coordenaday : chr "-3.901.910.996" "-3.886.503.323" "-3.820.704.866" "-3.900.716.726" ...
## $ tipo_de_recurso : chr "NO CONVENCIONAL" "NO CONVENCIONAL" "NO CONVENCIONAL" "NO CONVENCIONAL" ...
## $ proyecto : chr "GAS PLUS" "GAS PLUS" "Sin Proyecto" "GAS PLUS" ...
## $ clasificacion : chr "EXPLOTACION" "EXPLOTACION" "EXPLORACION" "EXPLOTACION" ...
## $ subclasificacion : chr "DESARROLLO" "DESARROLLO" "EXPLORACION" "DESARROLLO" ...
## $ sub_tipo_recurso : chr "TIGHT" "TIGHT" "SHALE" "TIGHT" ...
## $ fecha_data : chr "31/1/2018" "31/1/2015" "31/1/2017" "31/1/2018" ...
4. Conteo
n_total <- length(variable)
n_na <- sum(is.na(variable) | variable == "")
n_validos <- n_total - n_na
cat("Total de registros:", n_total, "\n")
## Total de registros: 400759
cat("Valores faltantes:", n_na, "\n")
## Valores faltantes: 601
cat("Valores válidos:", n_validos, "\n")
## Valores válidos: 400158
5. Tabla de Frecuencia
tabla_frec <- table(variable)
tabla_df <- as.data.frame(tabla_frec)
colnames(tabla_df) <- c("Categoria", "ni")
tabla_df$hi <- tabla_df$ni / sum(tabla_df$ni)
tabla_df$hi_porc <- round(tabla_df$hi * 100, 2)
tabla_df <- tabla_df %>% arrange(desc(ni))
# Fila de totales
totales <- data.frame(Categoria = "TOTAL",
ni = sum(tabla_df$ni),
hi = sum(tabla_df$hi),
hi_porc = sum(tabla_df$hi_porc))
tabla_final <- rbind(tabla_df, totales)
# Tabla con gt
tabla_final_gt <- tabla_final %>%
gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Tipo de Pozo**")) %>%
tab_source_note(source_note = "Autor: Mayerli Nazareno") %>%
cols_label(
Categoria = "Tipo de Pozo",
ni = "Frecuencia (ni)",
hi_porc = "Porcentaje (hi%)"
) %>%
cols_hide(columns = hi) %>%
fmt_number(columns = c(hi_porc), decimals = 2) %>%
tab_options(heading.title.font.size = px(16))
tabla_final_gt
| Tabla N°1 de Distribución de Frecuencias de Tipo de Pozo |
| Tipo de Pozo |
Frecuencia (ni) |
Porcentaje (hi%) |
| Gasífero |
218738 |
54.58 |
| Petrolífero |
153729 |
38.36 |
| Otro tipo |
26977 |
6.73 |
| Sumidero |
624 |
0.16 |
|
601 |
0.15 |
| Inyección de Agua |
56 |
0.01 |
| Inyección de Gas |
34 |
0.01 |
| TOTAL |
400759 |
100.00 |
| Autor: Mayerli Nazareno |
6. Gráficas
6.1 Diagrama de Barras de Cantidad
par(mar = c(13, 6, 4, 2))
barplot(tabla_df$ni,
main = "", xlab = "", ylab = "",
col = "skyblue",
ylim = c(0, max(tabla_df$ni) * 1.15),
names.arg = tabla_df$Categoria,
cex.names = 0.8, las = 2)
mtext("Cantidad", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Tipo de Pozo", side = 1, line = 11)
mtext("Gráfica N°1: Distribución de Cantidad de Pozos por Tipo",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

# Misma información, agregando el valor exacto sobre cada barra
par(mar = c(13, 6, 4, 2))
bp1 <- barplot(tabla_df$ni,
main = "", xlab = "", ylab = "",
col = "skyblue",
ylim = c(0, max(tabla_df$ni) * 1.25),
names.arg = tabla_df$Categoria,
cex.names = 0.8, las = 2)
mtext("Cantidad", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Tipo de Pozo", side = 1, line = 11)
mtext("Gráfica N°2: Distribución de Cantidad de Pozos por Tipo (con etiquetas)",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp1, y = tabla_df$ni, labels = tabla_df$ni, pos = 3, cex = 0.75, col = "black")

6.2 Diagrama de Barras Porcentual
par(mar = c(13, 4, 4, 2))
barplot(tabla_df$hi_porc,
main = "", xlab = "", ylab = "Porcentaje %",
col = "skyblue",
ylim = c(0, max(tabla_df$hi_porc) * 1.15),
names.arg = tabla_df$Categoria,
cex.names = 0.8, las = 2)
mtext("Tipo de Pozo", side = 1, line = 11)
mtext("Gráfica N°3: Distribución Porcentual de Pozos por Tipo",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)

par(mar = c(13, 4, 4, 2))
bp2 <- barplot(tabla_df$hi_porc,
main = "", xlab = "", ylab = "Porcentaje %",
col = "skyblue",
ylim = c(0, max(tabla_df$hi_porc) * 1.3),
names.arg = tabla_df$Categoria,
cex.names = 0.8, las = 2)
mtext("Tipo de Pozo", side = 1, line = 11)
mtext("Gráfica N°4: Distribución Porcentual de Pozos por Tipo (con etiquetas)",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
text(x = bp2, y = tabla_df$hi_porc,
labels = paste0(round(tabla_df$hi_porc, 2), "%"),
pos = 3, cex = 0.8, col = "black")

6.3 Diagrama Circular
par(mar = c(5, 4, 4, 10), xpd = TRUE)
mis_colores <- c("#1F5FFE", "#83E5FC", "#81D4EA", "#4EC3F7", "#29D8F5", "#0277BD")
colores_finales <- rep(mis_colores, length.out = nrow(tabla_df))
# Para evitar que las etiquetas de categorías muy pequeñas (< 2%) se
# encimen y queden ilegibles, solo se rotulan dentro del gráfico las
# categorías con participación >= 2%; el resto igual se identifica por
# color y porcentaje en la leyenda.
etiquetas_pie <- ifelse(tabla_df$hi_porc < 2, "",
paste0(round(tabla_df$hi_porc, 1), "%"))
pie(tabla_df$ni,
main = "", radius = 0.9,
labels = etiquetas_pie,
col = colores_finales, cex = 0.7)
mtext("Gráfica N°5: Distribución Porcentual de Pozos por Tipo",
side = 3, line = 2, adj = 0.5, cex = 0.9, font = 2)
legend(x = 1.3, y = 1.1,
legend = paste0(tabla_df$Categoria, " (", round(tabla_df$hi_porc, 1), "%)"),
fill = colores_finales, cex = 0.6,
title = "Tipo de Pozo", bty = "n")

7. Indicadores Estadísticos
# Para una variable NOMINAL el único indicador válido es la MODA
moda <- as.character(tabla_df$Categoria[which.max(tabla_df$ni)])
moda_pct <- tabla_df$hi_porc[which.max(tabla_df$ni)]
tabla_indicadores <- data.frame(
Variable = "Tipo de Pozo",
Rango = "-",
"Media (Me)" = "-",
"Mediana (Md)" = "-",
"Moda (Mo)" = moda,
"Varianza (V)" = "-",
"Desv. Est. (Sd)" = "-",
"C.V. (%)" = "-",
"Asimetria (As)" = "-",
"Curtosis (K)" = "-",
check.names = FALSE
)
tabla_indicadores_gt <- tabla_indicadores %>%
gt() %>%
tab_header(title = md("**Tabla N°2 de Indicadores de Tipo de Pozo**")) %>%
tab_source_note(source_note = "Autor: Mayerli Nazareno")
tabla_indicadores_gt
| Tabla N°2 de Indicadores de Tipo de Pozo |
| Variable |
Rango |
Media (Me) |
Mediana (Md) |
Moda (Mo) |
Varianza (V) |
Desv. Est. (Sd) |
C.V. (%) |
Asimetria (As) |
Curtosis (K) |
| Tipo de Pozo |
- |
- |
- |
Gasífero |
- |
- |
- |
- |
- |
| Autor: Mayerli Nazareno |