setwd("~/UCE/III/estadistica")
#Carga de Datos
datos <- read.csv("Conjunto_Datos_Minerales.csv", header = TRUE, sep = ";", 
                  dec = ".")

# 1. Normalizar y extraer variable 'ore'
Ore <- tolower(trimws(as.character(datos$ore)))

# 2. Tabla de frecuencia
TablaOre <- as.data.frame(table(Ore))
names(TablaOre) <- c("Mineral", "ni")  # ni = frecuencia

# 3. Calcular porcentaje
TablaOre$hi <- (TablaOre$ni / sum(TablaOre$ni)) * 100  # hi = porcentaje

#GDF

# 4. LOCAL
barplot(TablaOre$ni,
        names.arg = TablaOre$Mineral,
        main = "Gráfico No.1: distribucion de cantidad de minerales extraídos",
        xlab = "Mineral",
        ylab = "Cantidad",
        col = "skyblue",
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

# 5. Gráfico de barras - Frecuencia GLOBAL
barplot(TablaOre$ni,
        names.arg = TablaOre$Mineral,
        main = "Gráfico No.2: distribucion de cantidad de minerales extraídos",
        xlab = "Mineral",
        ylab = "Cantidad",
        col = "skyblue",
        las = 2,
        ylim = c(0, max(TablaOre$ni) * 1.1),
        cex.names = 0.5,
        cex.axis = 0.5)

# 6. Gráfico de barras - Porcentaje LOCAL
barplot(TablaOre$hi,
        names.arg = TablaOre$Mineral,
        main = "Gráfico No.3: distribucion de porcentaje de minerales extraídos",
        xlab = "Mineral",
        ylab = "Porcentaje",
        col = "lightgreen",
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

# 7. Gráfico de barras - Porcentaje GLOBAL
barplot(TablaOre$hi,
        names.arg = TablaOre$Mineral,
        main = "Gráfico No.4: distribucion de porcentaje de minerales extraídos",
        xlab = "Mineral",
        ylab = "Porcentaje",
        col = "lightgreen",
        las = 2,
        ylim = c(0, 100),
        cex.names = 0.5,
        cex.axis = 0.5)

#AGRUPACION

# 8. Tabla ordenada por frecuencia
TablaOreOrd <- TablaOre[order(-TablaOre$ni), ]
top_n <- 7
minerales_top <- TablaOreOrd$Mineral[1:top_n]

# 9. Agrupación
OreAgrupado <- ifelse(Ore %in% minerales_top, Ore, "Otros minerales explotables")
TablaOreAgrupada <- as.data.frame(table(OreAgrupado))
names(TablaOreAgrupada) <- c("Mineral", "Frecuencia")


# 10. Porcentaje
TablaOreAgrupada$Porcentaje <- round((TablaOreAgrupada$Frecuencia / sum(TablaOreAgrupada$Frecuencia)) * 100,)
print(TablaOreAgrupada)
##                       Mineral Frecuencia Porcentaje
## 1                                 234074         77
## 2                    chromite       1792          1
## 3                      galena       1445          0
## 4                        gold      10427          3
## 5                   limestone       1585          1
## 6 Otros minerales explotables      51913         17
## 7             sand and gravel       2305          1
## 8                   scheelite       1091          0
# 11. Paleta de grises para pastel
colores_grises <- gray.colors(nrow(TablaOreAgrupada), start = 0.9, end = 0.3)

# 12.GDF
#local
barplot(TablaOreAgrupada$Frecuencia,
        names.arg = TablaOreAgrupada$Mineral,
        col = colores_grises,
        main = "Gráfico No.5: distribucion de cantidad del top 7 minerales extraídos",
        cex.main = 1,
        xlab = "Mineral",
        ylab = "Frecuencia",
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

#Global
barplot(TablaOreAgrupada$Frecuencia,
        names.arg = TablaOreAgrupada$Mineral,
        col = colores_grises,
        main = "Gráfico No.6: distribucion de cantidad del top 7 minerales extraídos",
        cex.main = 1,
        xlab = "Mineral",
        ylab = "Frecuencia",
        ylim = c(0,length(Ore)),
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

# Global porcentaje

barplot(TablaOreAgrupada$Porcentaje,
        names.arg = TablaOreAgrupada$Mineral,
        col = colores_grises,
        main = "Gráfico No.7: distribucion de porcentaje del top 7 minerales extraídos",
        cex.main = 1,
        xlab = "Mineral",
        ylab = "Porcentaje",
        ylim = c(0, 100),
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

#local porcentaje
barplot(TablaOreAgrupada$Porcentaje,
        names.arg = TablaOreAgrupada$Mineral,
        col = colores_grises,
        main = "Gráfico No.8: distribucion de porcentaje del top 7 minerales extraídos",
        cex.main = 1,
        xlab = "Mineral",
        ylab = "Porcentaje",
        las = 2,
        cex.names = 0.5,
        cex.axis = 0.5)

# Diagrama circular
par(mar = c(5, 4, 4, 12))  # espacio a la derecha
par(xpd = TRUE)           # permitir dibujar fuera


pie(TablaOreAgrupada$Frecuencia,
    labels = NA,
    col = colores_grises,
    main = "Gráfico No.9:Distribución de minerales económicamente explotables")

legend(x = 1.2, y = 1,
       legend = paste(TablaOreAgrupada$Mineral, ": ", round(TablaOreAgrupada$Porcentaje, 1), "%"),
       fill = colores_grises,
       cex = 0.6,
       bty = "n")