setwd("/cloud/project")
# Cargar datos
datos <- read.csv("Depositos_Sulfuro.csv", header = TRUE, sep = ";", dec = ".")

# Cargar paquete necesario
if (!require(countrycode)) install.packages("countrycode")
## Loading required package: countrycode
library(countrycode)

# --- FUNCIÓN DE AJUSTE DE REDONDEO ---
# Esta función asegura que la columna de porcentajes sume exactamente 100
ajustar_redondeo <- function(df, col_freq, col_perc_raw, col_perc_final) {
  # 1. Redondeo inicial
  df[[col_perc_final]] <- round(df[[col_perc_raw]], 2)
  
  # 2. Calcular el error
  error <- 100 - sum(df[[col_perc_final]])
  
  # 3. Encontrar el índice de la categoría con el mayor porcentaje sin redondear
  indice_max <- which.max(df[[col_perc_raw]])
  
  # 4. Aplicar el ajuste a esa categoría
  df[[col_perc_final]][indice_max] <- df[[col_perc_final]][indice_max] + error
  
  return(df)
}

# =================================================================
#                         TABLA POR PAÍS
# =================================================================

# 1. Tabla de frecuencia por país (ni)
TablaPais <- as.data.frame(table(datos$country))
colnames(TablaPais) <- c("Pais", "ni")

# 2. Calcular frecuencia relativa (hi_raw)
TablaPais$hi_raw <- (TablaPais$ni / sum(TablaPais$ni)) * 100

# 3. Aplicar ajuste de redondeo
TablaPais <- ajustar_redondeo(TablaPais, "ni", "hi_raw", "hi")

# 4. Seleccionar columnas finales
TablaPaisFinal <- TablaPais[, c("Pais", "ni", "hi")]

# 5. Fila TOTAL
total_pais <- data.frame(
  Pais = "Total",
  ni = sum(TablaPaisFinal$ni),
  hi = sum(TablaPaisFinal$hi)
)

# 6. Unir tablas
TablaPaisFinal <- rbind(TablaPaisFinal, total_pais)


# =================================================================
#                        TABLA POR CONTINENTE
# =================================================================

# 1. Agregar continente a la tabla base de países
TablaPais$Continente <- countrycode(TablaPais$Pais,
                                    origin = "country.name",
                                    destination = "continent")

# 2. Tabla de frecuencia por continente (ni)
TablaContinente <- aggregate(ni ~ Continente, data = TablaPais, sum)
TablaContinente$Continente <- as.character(TablaContinente$Continente) # Necesario para la función aggregate

# 3. Calcular frecuencia relativa (hi_raw)
TablaContinente$hi_raw <- (TablaContinente$ni / sum(TablaContinente$ni)) * 100

# 4. Aplicar ajuste de redondeo
TablaContinente <- ajustar_redondeo(TablaContinente, "ni", "hi_raw", "hi")

# 5. Seleccionar columnas finales
TablaContinenteFinal <- TablaContinente[, c("Continente", "ni", "hi")]

# 6. Fila TOTAL
total_continente <- data.frame(
  Continente = "Total",
  ni = sum(TablaContinenteFinal$ni),
  hi = sum(TablaContinenteFinal$hi)
)

# 7. Unir tablas
TablaContinenteFinal <- rbind(TablaContinenteFinal, total_continente)

# =================================================================
#                       MOSTRAR RESULTADOS
# =================================================================

## TABLA DE FRECUENCIAS POR PAÍS
print("--- TABLA DE FRECUENCIAS POR PAÍS ---")
## [1] "--- TABLA DE FRECUENCIAS POR PAÍS ---"
print(TablaPaisFinal)
##                  Pais   ni     hi
## 1           Argentina    2   0.18
## 2             Armenia    4   0.37
## 3           Australia   56   5.14
## 4             Bolivia    1   0.09
## 5              Brazil    3   0.28
## 6              Canada  317  29.07
## 7               Chile    2   0.18
## 8               China   37   3.39
## 9            Colombia    6   0.55
## 10               Cuba   13   1.19
## 11             Cyprus   18   1.65
## 12 Dominican Republic    3   0.28
## 13            Ecuador    2   0.18
## 14              Egypt    1   0.09
## 15            Eritrea    3   0.28
## 16               Fiji    3   0.28
## 17            Finland   12   1.10
## 18             France    4   0.37
## 19            Georgia    4   0.37
## 20      Great Britain    1   0.09
## 21          Guatemala    1   0.09
## 22             Guyana    2   0.18
## 23              India    2   0.18
## 24          Indonesia    4   0.37
## 25               Iran    2   0.18
## 26            Ireland    1   0.09
## 27              Japan   82   7.52
## 28         Kazakhstan   46   4.22
## 29             Mexico   16   1.47
## 30           Mongolia    1   0.09
## 31            Morocco    3   0.28
## 32             Norway   49   4.50
## 33               Oman    3   0.28
## 34           Pakistan    1   0.09
## 35               Peru    5   0.46
## 36        Philippines   19   1.74
## 37           Portugal   14   1.28
## 38             Russia   90   8.26
## 39       Saudi Arabia   21   1.93
## 40              Spain   61   5.60
## 41             Sweden   40   3.67
## 42             Turkey   26   2.39
## 43   Union of Myanmar    1   0.09
## 44      United States  100   9.17
## 45         Uzbekistan    5   0.46
## 46          Venezuela    3   0.28
## 47              Total 1090 100.00
## TABLA DE FRECUENCIAS POR CONTINENTE
print("--- TABLA DE FRECUENCIAS POR CONTINENTE ---")
## [1] "--- TABLA DE FRECUENCIAS POR CONTINENTE ---"
print(TablaContinenteFinal)
##   Continente   ni     hi
## 1     Africa    7   0.64
## 2   Americas  476  43.68
## 3       Asia  276  25.32
## 4     Europe  272  24.95
## 5    Oceania   59   5.41
## 6      Total 1090 100.00