df <- read.csv2("Producción_de_frutales_en_el_Valle_del_Cauca_20260130 (1).csv",
fileEncoding = "UTF-8",
stringsAsFactors = FALSE,
check.names = FALSE)
library(summarytools)
# Asegurar que sean cualitativas
df$Municipio <- as.factor(df$Municipio)
df$Cultivo <- as.factor(df$Cultivo)
# --- MUNICIPIO ---
table(df$Municipio)
##
## Alcalá Andalucia Ansermanuevo Argelia Bolivar
## 27 19 32 20 46
## Buenaventura Buga Bugalagrande Caicedonia Cali
## 29 51 27 20 25
## Calima Darién Candelaria Cartago Dagua El Aguila
## 31 13 24 29 41
## El Cairo El Cerrito El Dovio Florida Ginebra
## 31 25 17 49 21
## Guacarí Jamundí La Cumbre La Unión La Victoria
## 27 51 10 33 30
## Obando Palmira Pradera Restrepo Riofrío
## 18 42 33 52 38
## Roldanillo San Pedro Sevilla Toro Trujillo
## 35 29 38 20 34
## Tuluá Ulloa Versalles Vijes Yotoco
## 32 20 28 15 30
## Yumbo Zarzal
## 37 15
summarytools::freq(df$Municipio, cumul = FALSE)
## Frequencies
## df$Municipio
## Type: Factor
##
## Freq % Valid % Total
## ------------------- ------ --------- ---------
## Alcalá 27 2.17 2.17
## Andalucia 19 1.53 1.53
## Ansermanuevo 32 2.57 2.57
## Argelia 20 1.61 1.61
## Bolivar 46 3.70 3.70
## Buenaventura 29 2.33 2.33
## Buga 51 4.10 4.10
## Bugalagrande 27 2.17 2.17
## Caicedonia 20 1.61 1.61
## Cali 25 2.01 2.01
## Calima Darién 31 2.49 2.49
## Candelaria 13 1.05 1.05
## Cartago 24 1.93 1.93
## Dagua 29 2.33 2.33
## El Aguila 41 3.30 3.30
## El Cairo 31 2.49 2.49
## El Cerrito 25 2.01 2.01
## El Dovio 17 1.37 1.37
## Florida 49 3.94 3.94
## Ginebra 21 1.69 1.69
## Guacarí 27 2.17 2.17
## Jamundí 51 4.10 4.10
## La Cumbre 10 0.80 0.80
## La Unión 33 2.65 2.65
## La Victoria 30 2.41 2.41
## Obando 18 1.45 1.45
## Palmira 42 3.38 3.38
## Pradera 33 2.65 2.65
## Restrepo 52 4.18 4.18
## Riofrío 38 3.05 3.05
## Roldanillo 35 2.81 2.81
## San Pedro 29 2.33 2.33
## Sevilla 38 3.05 3.05
## Toro 20 1.61 1.61
## Trujillo 34 2.73 2.73
## Tuluá 32 2.57 2.57
## Ulloa 20 1.61 1.61
## Versalles 28 2.25 2.25
## Vijes 15 1.21 1.21
## Yotoco 30 2.41 2.41
## Yumbo 37 2.97 2.97
## Zarzal 15 1.21 1.21
## <NA> 0 0.00
## Total 1244 100.00 100.00
# --- CULTIVO ---
table(df$Cultivo)
##
## Aguacate Aguacate Hass Arazá Bananito Banano
## 85 64 4 8 158
## Borojó Brevo Chontaduro Cítricos Coco
## 5 2 15 43 5
## Curuba Durazno Fresa Granadilla Guanábana
## 15 10 35 13 21
## Guayaba Gulupa Limón Lulo Macadamia
## 118 4 72 48 15
## Mandarina Mango Maracuyá Mora Naranja
## 64 11 65 106 64
## Papaya Piña Pitaya Plátano Tomate de Árbol
## 7 11 71 31 46
## Uchuva Vid Zapote
## 2 8 18
summarytools::freq(df$Cultivo, cumul = FALSE)
## Frequencies
## df$Cultivo
## Type: Factor
##
## Freq % Valid % Total
## --------------------- ------ --------- ---------
## Aguacate 85 6.83 6.83
## Aguacate Hass 64 5.14 5.14
## Arazá 4 0.32 0.32
## Bananito 8 0.64 0.64
## Banano 158 12.70 12.70
## Borojó 5 0.40 0.40
## Brevo 2 0.16 0.16
## Chontaduro 15 1.21 1.21
## Cítricos 43 3.46 3.46
## Coco 5 0.40 0.40
## Curuba 15 1.21 1.21
## Durazno 10 0.80 0.80
## Fresa 35 2.81 2.81
## Granadilla 13 1.05 1.05
## Guanábana 21 1.69 1.69
## Guayaba 118 9.49 9.49
## Gulupa 4 0.32 0.32
## Limón 72 5.79 5.79
## Lulo 48 3.86 3.86
## Macadamia 15 1.21 1.21
## Mandarina 64 5.14 5.14
## Mango 11 0.88 0.88
## Maracuyá 65 5.23 5.23
## Mora 106 8.52 8.52
## Naranja 64 5.14 5.14
## Papaya 7 0.56 0.56
## Piña 11 0.88 0.88
## Pitaya 71 5.71 5.71
## Plátano 31 2.49 2.49
## Tomate de Árbol 46 3.70 3.70
## Uchuva 2 0.16 0.16
## Vid 8 0.64 0.64
## Zapote 18 1.45 1.45
## <NA> 0 0.00
## Total 1244 100.00 100.00
# Convertir Producción a numérica
prod_txt <- as.character(df$`Producción en toneladas`)
prod_txt <- gsub("\\.", "", prod_txt)
prod_txt <- gsub(",", ".", prod_txt)
df$Producción <- as.numeric(prod_txt)
df$Año <- as.numeric(df$Año)
# Función de indicadores
indicadores <- function(x){
x <- x[!is.na(x)]
media <- mean(x); mediana <- median(x)
varianza <- var(x); sd <- sd(x)
rango <- max(x) - min(x)
iqr <- IQR(x)
cv <- (sd/media)*100
# Forma
m2 <- mean((x-media)^2)
m3 <- mean((x-media)^3)
m4 <- mean((x-media)^4)
asimetria <- m3/(m2^(3/2))
curtosis <- m4/(m2^2) - 3
data.frame(
Media = media,
Mediana = mediana,
Varianza = varianza,
Desv_Estandar = sd,
Rango = rango,
IQR = iqr,
CV_pct = cv,
Asimetria = asimetria,
Curtosis = curtosis
)
}
# Año
indicadores(df$Año)
## Media Mediana Varianza Desv_Estandar Rango IQR CV_pct Asimetria
## 1 2020.589 2021 2.536682 1.592696 22 2 0.07882337 -5.414678
## Curtosis
## 1 65.23227
# Producción
indicadores(df$Producción)
## Media Mediana Varianza Desv_Estandar Rango IQR CV_pct Asimetria Curtosis
## 1 1182.958 141.6 15539035 3941.958 77832 590 333.229 9.455132 136.3299
knitr::kable(indicadores(df\(Año)) knitr::kable(indicadores(df\)Producción))