setwd("C:/Users/Usuario/Desktop/Nueva carpeta")
library(readxl)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(gt)
datos <- read_excel("tabela_de_pocos_janeiro_2018.xlsx")

Cargar datos

Se define la ruta del archivo y se procede a importar la base de datos desde Excel.

Tabla de distribución de frecuencia

Se determina la frecuencia absoluta de las empresas operadoras.

Operador <- datos$OPERADOR
TDFOperador <- as.data.frame(table(Operador))
colnames(TDFOperador) <- c("Operador","Freq")

Agrupación de operadores por categorías

Se realiza la clasificación de los operadores según su tipo de empresa.

TDFOperador$Operadores <- ifelse(TDFOperador$Operador %in% c("Petrobras"), "Empresa Nacional Estatal",
ifelse(TDFOperador$Operador %in% c("PetroRio O&G","Recôncavo E&P","Dommo Energia","Parnaíba Gás Natural","Petra Energia","Petrosynergy","Petroil","Queiroz Galvão","SHB","Santana","Imetame","Panergy","OP Energia","Vipetro","Guto & Cacal","Espigão","Oeste de Canoas","Nova Petróleo Rec","Norteoleum","Nord","Newo","Máxima 07","Marítima","Alvopetro","Allpetro","Alcom","Aurizônia Petróleo","Arclima","Central Resources","Cemes","Perícia"),
"Empresas Nacionales Privadas",
ifelse(TDFOperador$Operador %in% c("Shell","Shell Brasil","BP","BP Brasil","BP Energy","Total E&P do Brasil","Chevron Brasil","Chevron Frade","ExxonMobil Brasil","Equinor","Statoil Brasil","Statoil Brasil O&G","Repsol Sinopec","Eni Oil","BG Brasil","Petrogal Brasil","Rosneft"),
"Empresas Extranjeras Mayores",
ifelse(TDFOperador$Operador %in% c("Wintershall BM-S-14","Unocal","Texaco BM-C-5","Devon Brasil","Amerada Hess","Anadarko","Cowan Petróleo e Gás","ONGC Campos","Partex Brasil","Perenco Brasil","Karoon","Maha Energy","Geopark Brasil","Great Oil","Silver Marlin","Sipet","Tek","Tecpetrol Brasil","Leros","Phoenix","Cisco","EPG Brasil","Esso Expl Offshore","Esso Explor e Des","IPI","Integral"),
"Empresas Extranjeras Independientes","Otros"))))

head(TDFOperador)
##       Operador Freq                          Operadores
## 1        Alcom   11        Empresas Nacionales Privadas
## 2     Allpetro    1        Empresas Nacionales Privadas
## 3    Alvopetro   16        Empresas Nacionales Privadas
## 4 Amerada Hess    3 Empresas Extranjeras Independientes
## 5     Anadarko   15 Empresas Extranjeras Independientes
## 6      Arclima    1        Empresas Nacionales Privadas

Cálculo de frecuencias por categoría

Se calcula la distribución de frecuencias absoluta (ni) y relativa (hi) para cada grupo.

TDFOperador$Freq <- as.numeric(TDFOperador$Freq)

TDFOperador1 <- TDFOperador %>%
group_by(Operadores) %>%
summarise(
ni = sum(Freq),
hi = round(sum(Freq)/sum(TDFOperador$Freq)*100,2)
)

TDFOperador1
## # A tibble: 5 × 3
##   Operadores                             ni    hi
##   <chr>                               <dbl> <dbl>
## 1 Empresa Nacional Estatal            25142 94.4 
## 2 Empresas Extranjeras Independientes   164  0.62
## 3 Empresas Extranjeras Mayores          414  1.55
## 4 Empresas Nacionales Privadas          894  3.36
## 5 Otros                                  29  0.11

Agregar Totales

Se incorpora la fila de totales para las frecuencias absoluta y relativa.

TDFOperador1$fi <- TDFOperador1$ni / sum(TDFOperador1$ni)

TDFOperador1 <- TDFOperador1[, c("Operadores", "ni", "hi", "fi")]

total_ni <- sum(TDFOperador1$ni)
total_hi <- sum(TDFOperador1$hi)
total_fi <- sum(TDFOperador1$fi)

TDFOperadorFinal <- rbind(TDFOperador1, data.frame(
  Operadores = "Total",
  ni = total_ni,
  hi = total_hi,
  fi = total_fi
))

print(TDFOperadorFinal)
## # A tibble: 6 × 4
##   Operadores                             ni     hi      fi
##   <chr>                               <dbl>  <dbl>   <dbl>
## 1 Empresa Nacional Estatal            25142  94.4  0.944  
## 2 Empresas Extranjeras Independientes   164   0.62 0.00616
## 3 Empresas Extranjeras Mayores          414   1.55 0.0155 
## 4 Empresas Nacionales Privadas          894   3.36 0.0336 
## 5 Otros                                  29   0.11 0.00109
## 6 Total                               26643 100.   1

Tabla en formato GT

Se presenta la tabla con formato claro y profesional.

library(gt)

gt(TDFOperadorFinal) %>%
  tab_header(
    title    = md("**Cuadro No.1**"),
    subtitle  = " Operadores de los pozos petroliferos en Brasil"
  ) %>%
  tab_spanner(
    label   = md("**Frecuencia Relativa**"),
    columns = c(hi, fi)
  ) %>%
  cols_label(
    ni = md("**ni**"),
    hi = md("Porcentual (%)"),
    fi = md("Fracción")
  ) %>%
  fmt_number(columns = hi, decimals = 2) %>%
  fmt_number(columns = fi, decimals = 4) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style     = list(cell_fill(color = "#2E4053"),
                     cell_text(color = "white", weight = "bold")),
    locations = cells_title()
  ) %>%
  tab_style(
    style     = list(cell_fill(color = "#F2F3F4"),
                     cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_style(
    style     = list(cell_fill(color = "#2E4053"),
                     cell_text(color = "white", weight = "bold")),
    locations = cells_column_spanners()
  ) %>%
  tab_style(
    style     = list(cell_fill(color = "#D5D8DC"),
                     cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_body(rows = nrow(TDFOperadorFinal))
  ) %>%
  tab_options(
    table.border.top.color          = "#2E4053",
    table.border.bottom.color       = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding                = px(6),
    table.font.size                 = px(13)
  )
Cuadro No.1
Operadores de los pozos petroliferos en Brasil
Operadores ni
Frecuencia Relativa
Porcentual (%) Fracción
Empresa Nacional Estatal 25142 94.37 0.9437
Empresas Extranjeras Independientes 164 0.62 0.0062
Empresas Extranjeras Mayores 414 1.55 0.0155
Empresas Nacionales Privadas 894 3.36 0.0336
Otros 29 0.11 0.0011
Total 26643 100.01 1.0000

Gráficas

Histograma de frecuencia absoluta local

Se representa gráficamente la frecuencia absoluta de cada grupo.

TDFOperadorFinal <- TDFOperadorFinal[TDFOperadorFinal$Operadores != "Total", ]
par(mar = c(12, 4, 4, 2))
barplot(TDFOperadorFinal$ni,
        main = "Gráfica N°1: Distribución en cantidad de operadores",
        ylab = "Cantidad",
        col = "#2E4053", names.arg = TDFOperadorFinal$Operadores,
        las = 2, cex.names = 0.6, cex.axis = 0.8, cex.main = 1)
mtext("Operadores", side = 1, line = 9, adj = 0.5)

Histograma de frecuencia absoluta global

Se muestra la distribución de la frecuencia absoluta con un rango ampliado en el eje Y.

par(mar = c(12, 4, 4, 2))
barplot(TDFOperadorFinal$ni,
        main = "Gráfica N°2: Distribución en cantidad de operadoreS",
        ylab = "Cantidad",
        col = "#2E4053", names.arg = TDFOperadorFinal$Operadores,
        las = 2, cex.names = 0.6, cex.axis = 0.8, cex.main = 1,
        ylim = c(0,30000)) 
mtext("Operadores", side = 1, line = 9, adj = 0.5)

Histograma de frecuencia relativa local

Se presenta la distribución porcentual de cada categoría.

par(mar = c(12, 4, 4, 2))
barplot(TDFOperadorFinal$hi,
        main = "Gráfica N°3: Distribución en porcentaje de participación de operadores",
        ylab = "Porcentaje",
        col = "#2E4053", names.arg = TDFOperadorFinal$Operadores,
        las = 2, cex.names = 0.6, cex.axis = 0.8, cex.main = 1)
mtext("Operadores", side = 1, line = 9, adj = 0.5)

Histograma de frecuencia relativa global

Se presenta la gráfica porcentual con un límite superior de 100 %.

par(mar = c(12, 4, 4, 2))
barplot(TDFOperadorFinal$hi,
        main = "Gráfica N°4: Distribución en porcentaje de participación de operadoreS",
        ylab = "Porcentaje",
        col = "#2E4053", names.arg = TDFOperadorFinal$Operadores,
        las = 2, cex.names = 0.6, cex.axis = 0.8, cex.main = 1,
        ylim = c(0,100))
mtext("Operadores", side = 1, line = 9, adj = 0.5)

Diagrama circular

library(ggplot2)
library(ggrepel)

datos_plot <- TDFOperadorFinal
datos_plot$ymax <- cumsum(datos_plot$hi)
datos_plot$ymin <- c(0, head(datos_plot$ymax, n=-1))
datos_plot$posicion_label <- (datos_plot$ymax + datos_plot$ymin) / 2
colores <- c("#90CFFF", "#966BFF", "#FF6A8B", "#FFA88B", "#CCDE8B", "#20DE8B")
ggplot(datos_plot, aes(ymax=ymax, ymin=ymin, xmax=4, xmin=0, fill=Operadores)) +
  geom_rect(color = "black") +
  coord_polar(theta="y") + 
  geom_label_repel(aes(y = posicion_label, x = 4, label = paste0(round(hi, 2))),
                   size = 4, 
                   nudge_x = 0.5,  
                   show.legend = FALSE) +
  scale_fill_manual(values = colores) +
  ggtitle("Gráfica N°5: Distribución porcentual de operadores") +
  theme_void()+
  theme(
    legend.position = "right",
    plot.title = element_text(hjust = 0.5),
    legend.background = element_rect(color = "black", 
                                     fill = "white",    
                                     linewidth = 0.5, 
                                     linetype = "solid"
  ), 
  legend.margin = margin(t = 10, r = 10, b = 10, l = 10) 
  )

Resumen Estadístico

Conclusiones <- data.frame(
Variable = "Tipo de operador petrolero",
`Rango [Min; Max]` = "N/A",
`Media (X̄)` = "N/A",
`Mediana (Me)` = "N/A",
`Moda (Mo)` = "Empresa Nacional Estatal",
`Varianza (S²)` = "N/A",
`Desv. Est. (S)` = "N/A",
`C.V. (%)` = "N/A",
`Asimetría (As)` = "N/A",
`Curtosis (K)` = "N/A",
`Valores Atípicos` = "N/A",
check.names = FALSE)


library(gt)

gt(Conclusiones) %>%
tab_header(
title = md("CONCLUSIONES Y ESTADÍSTICOS"),
subtitle = "Resumen de indicadores descriptivos"
) %>%
tab_source_note(source_note = "Autor: Caleb Yanez") %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#2E4053"), cell_text(color = "white", weight = "bold")),
    locations = cells_title()
  ) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F3F4"), cell_text(weight = "bold", color = "#2E4053")),
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.border.top.color = "#2E4053",
    table.border.bottom.color = "#2E4053",
    column_labels.border.bottom.color = "#2E4053",
    data_row.padding = px(6))
CONCLUSIONES Y ESTADÍSTICOS
Resumen de indicadores descriptivos
Variable Rango [Min; Max] Media (X̄) Mediana (Me) Moda (Mo) Varianza (S²) Desv. Est. (S) C.V. (%) Asimetría (As) Curtosis (K) Valores Atípicos
Tipo de operador petrolero N/A N/A N/A Empresa Nacional Estatal N/A N/A N/A N/A N/A N/A
Autor: Caleb Yanez

Interpretación narrativa

La moda corresponde a la categoría Empresa Nacional Estatal, ya que es el tipo de operador que presenta la mayor frecuencia dentro del conjunto de pozos petrolíferos analizados.