library(tidyverse) # Manipulación de datos y gráficos
library(janitor) # Edición de nombres en bases de datos
library(moments) # Cálculo de coefiente de asimetría y curtosis
library(DT) # Tablas interactivas en documentos HTML
<- 12
entero1 class(entero1)
## [1] "numeric"
typeof(entero1)
## [1] "double"
Hago una suma:
+ 50 entero1
## [1] 62
<- 12L
entero2 class(entero2)
## [1] "integer"
typeof(entero2)
## [1] "integer"
<- 12.3
continua1 class(continua1)
## [1] "numeric"
typeof(continua1)
## [1] "double"
+ 50 continua1
## [1] 62.3
<- c(12.3, 4.5, 6.8)
vector_numerico class(vector_numerico)
## [1] "numeric"
<- "Medellín"
texto1 class(texto1)
## [1] "character"
<- c("Medellín", "Cali", "Bogotá")
ciudad class(ciudad)
## [1] "character"
<- factor(c("enero", "febrero", "marzo", "abril", "mayo",
factor_desordenado "junio"))
factor_desordenado
## [1] enero febrero marzo abril mayo junio
## Levels: abril enero febrero junio marzo mayo
<-
factor_ordenado factor(
c("enero", "febrero", "marzo", "abril", "mayo",
"junio"),
levels = c("enero", "febrero", "marzo", "abril",
"mayo", "junio")
)
factor_ordenado
## [1] enero febrero marzo abril mayo junio
## Levels: enero febrero marzo abril mayo junio
<- read_csv("Evaluaciones_Agropecuarias_Municipales___EVA._2019_-_2021._Base_Agr_cola.csv")
eva
%>% head(n = 5) eva
%>% glimpse() eva
## Rows: 23,786
## Columns: 18
## $ `Código Dane departamento` <chr> "05", "05", "05", "05", "05", "05", "0~
## $ Departamento <chr> "Antioquia", "Antioquia", "Antioquia",~
## $ `Código Dane municipio` <chr> "05001", "05001", "05001", "05001", "0~
## $ Municipio <chr> "Medellín", "Medellín", "Medellín", "M~
## $ `Grupo cultivo` <chr> "Cultivos Tropicales Tradicionales", "~
## $ Subgrupo <chr> "Cultivos Tropicales Tradicionales", "~
## $ Cultivo <chr> "Café", "Caña", "Limón", "Mandarina", ~
## $ `Desagregación cultivo` <chr> "Café", "Caña Panelera", "Limón Tahit~
## $ Año <dbl> 2021, 2021, 2021, 2021, 2021, 2021, 20~
## $ Periodo <chr> "2021", "2021", "2021", "2021", "2021"~
## $ `Área sembrada` <dbl> 437.58, 77.20, 4.50, 14.50, 12.50, 8.5~
## $ `Área cosechada` <dbl> 378.22, 77.20, 4.50, 14.50, 12.50, 4.5~
## $ Producción <dbl> 276.10, 4632.00, 36.00, 87.00, 87.50, ~
## $ Rendimiento <dbl> 0.73, 60.00, 8.00, 6.00, 7.00, 6.00, 6~
## $ `Ciclo del cultivo` <chr> "Permanente", "Permanente", "Permanent~
## $ `Estado físico del cultivo` <chr> "Pergamino O Seco De Trilla", "Caña O ~
## $ `Código del cultivo` <dbl> 2030300, 2030402, 2043603, 2044101, 20~
## $ `Nombre científico del cultivo` <chr> "Coffea arabica L.", "Saccharum offici~
<- eva %>%
eva_depurada clean_names()
%>% head() eva_depurada
class(eva_depurada$rendimiento)
## [1] "numeric"
%>%
eva_depurada count(ano)
%>%
eva_depurada count(cultivo)
%>%
eva_depurada count(cultivo) %>%
arrange(n)
%>%
eva_depurada count(cultivo) %>%
arrange(desc(n))
%>%
eva_depurada count(cultivo, departamento) %>%
arrange(desc(n))
select()
para seleccionar
columnas:<-
datos_select %>%
eva_depurada select(
departamento,
municipio,
cultivo,
ano,
periodo,
area_sembrada,
area_cosechada,
rendimiento
)
%>% head() datos_select
filter()
:
<-
datos_palmira %>%
datos_select filter(municipio == "Palmira")
datos_palmira
<-
limon_cafe %>%
datos_select filter(cultivo %in% c("Limón", "Café"))
limon_cafe
<-
area_mayor50 %>%
datos_select filter(area_sembrada > 50)
area_mayor50
%>%
datos_select filter(cultivo == "Café") %>%
filter(area_sembrada > 120)
mutate()
podemos editar las variables
existentes y crear nuevas variables.\[Área\ perdida (\%) = \left(1 - \frac{Área\ cosechada}{ Área\ sembrada} \right) \times 100\]
<-
datos_perdida %>%
datos_select mutate(area_perdida_p = (1 - (area_cosechada / area_sembrada)) * 100)
%>% head() datos_perdida
\[Área\ perdida (ha) = Área\ sembrada - Área\ cosechada\]
<-
datos_perdida_ha %>%
datos_perdida mutate(area_perdida_ha = area_sembrada - area_cosechada)
%>% head() datos_perdida_ha
count()
,
select()
,filter()
, mutate()
,
arrange()
juntas a través de la tubería
%>%
<-
eva_antioquia %>%
eva_depurada select(
departamento,
municipio,
cultivo,
ano,
periodo,
area_sembrada,
area_cosechada,
rendimiento%>%
) filter(departamento == "Antioquia") %>%
mutate(area_perdida_p = (1 - (area_cosechada / area_sembrada)) * 100,
area_perdida_ha = area_sembrada - area_cosechada)
%>% head() eva_antioquia
%>%
eva_antioquia summarise(sum(area_sembrada))
group_by()
%>%
summarise()
%>%
ungroup()
%>%
eva_antioquia group_by(cultivo) %>%
summarise(total_area_ha = sum(area_perdida_ha)) %>%
ungroup() %>% # opcional pero es una buena práctica
arrange(desc(total_area_ha))
%>%
eva_antioquia summarise(total_area_ha = sum(area_perdida_ha))
46573.14 / 0.64
## [1] 72770.53
46573.14 / 0.82
## [1] 56796.51
46573.14 / 1292549) * 100 (
## [1] 3.603201
# Área perdida: 46573.14
# Área total sembrada: 435373.3
46573.14 / 435373.3) * 100 (
## [1] 10.69729
Función | Descripción | Tipo de variable |
---|---|---|
mean() |
Calcular promedio | cuantitativa |
weighted.mean() |
Calcular promedio ponderado | Cunatitativa |
median() |
Calcular mediana | Cuantitativa |
sd() |
Calcular desviación estándar | cuantitativa |
var() |
Calcular la varianza | Cuantitativa |
range() |
Calcular el rango | Cuantitativa |
IQR() |
Calcular rango intercuartílico | Cuantitativa |
quantile() |
Calcular cuartiles, deciles y percentiles | Cuantitativa |
min() |
Valor mínimo | Cuantitativa |
max() |
Valor máximo | Cuantitativa |
* moda() |
Moda | Cuantitativa y cualitativa |
<- c(1, 2, 3, NA)
ejemplo %>% mean(na.rm = TRUE) # na.rm = TRUE para no tener en cuenta los NA ejemplo
## [1] 2
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(promedio_rto = mean(rendimiento))
%>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(
promedio_rto = mean(rendimiento),
area_cosechada = sum(area_cosechada),
N = n()
%>%
) ungroup() %>%
arrange(desc(promedio_rto))
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(prom_rto_pond = weighted.mean(x = rendimiento, w = area_cosechada))
%>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(
promedio_rto = mean(rendimiento),
promedio_rto_pond = weighted.mean(x = rendimiento, w = area_cosechada),
area_cosechada = sum(area_cosechada),
N = n()
%>%
) ungroup() %>%
arrange(desc(promedio_rto))
%>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(mediana_rto = median(rendimiento),
promedio_rto = mean(rendimiento)) %>%
ungroup() %>%
arrange(desc(mediana_rto))
<- function(x) {
moda = unique(x)
ux = tabulate(match(x, ux))
tab == max(tab)]
ux[tab }
%>%
eva_depurada summarise(moda_depto = moda(departamento))
%>%
eva_depurada count(departamento, sort = TRUE)
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(desv_est_rto = sd(rendimiento))
%>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(promedio_rto = mean(rendimiento),
desv_est_rto = sd(rendimiento),
cv = desv_est_rto / promedio_rto,
N = n()) %>%
ungroup() %>%
arrange(desc(promedio_rto))
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(varianza_rto = var(rendimiento))
30.08333 %>%
sqrt()
## [1] 5.484827
%>%
eva_depurada filter(cultivo == "Mango") %>%
filter(rendimiento > 0) %>%
summarise(rango = range(rendimiento))
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(minimo_rto = min(rendimiento),
maximo_rto = max(rendimiento))
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(rango_ic = IQR(rendimiento))
%>%
eva_depurada filter(cultivo == "Mango") %>%
summarise(cuartiles = quantile(rendimiento,
probs = seq(from = 0, to = 1, by = 0.25)))
%>%
eva_depurada filter(cultivo == "Mango") %>%
pull(rendimiento) %>%
quantile(probs = seq(from = 0, to = 1, by = 0.25))
## 0% 25% 50% 75% 100%
## 0.0 6.0 9.0 13.1 30.0
%>%
eva_depurada filter(cultivo == "Mango") %>%
pull(rendimiento) %>%
quantile(probs = seq(from = 0, to = 1, by = 0.1))
## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 0.000 3.174 5.000 6.308 8.000 9.000 10.000 12.000 14.000 16.000 30.000
%>%
eva_depurada filter(cultivo == "Mango") %>%
pull(rendimiento) %>%
quantile(probs = seq(from = 0, to = 1, by = 0.01))
## 0% 1% 2% 3% 4% 5% 6% 7% 8% 9%
## 0.0000 0.0000 0.0000 0.9740 1.2552 2.0000 2.5232 2.9530 3.0000 3.0000
## 10% 11% 12% 13% 14% 15% 16% 17% 18% 19%
## 3.1740 3.5266 3.9900 4.0000 4.1904 5.0000 5.0000 5.0000 5.0000 5.0000
## 20% 21% 22% 23% 24% 25% 26% 27% 28% 29%
## 5.0000 5.5000 5.5976 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000
## 30% 31% 32% 33% 34% 35% 36% 37% 38% 39%
## 6.3080 6.9900 7.0000 7.0000 7.0000 7.0000 7.0000 7.3380 7.5968 8.0000
## 40% 41% 42% 43% 44% 45% 46% 47% 48% 49%
## 8.0000 8.0000 8.0000 8.0000 8.0000 8.0000 8.4424 8.7346 9.0000 9.0000
## 50% 51% 52% 53% 54% 55% 56% 57% 58% 59%
## 9.0000 9.0000 9.8320 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000 10.0000
## 60% 61% 62% 63% 64% 65% 66% 67% 68% 69%
## 10.0000 10.0000 10.1920 11.0000 11.0000 11.6510 12.0000 12.0000 12.0000 12.0000
## 70% 71% 72% 73% 74% 75% 76% 77% 78% 79%
## 12.0000 12.0000 12.7792 13.0000 13.0000 13.1000 13.5000 13.9626 14.0000 14.0000
## 80% 81% 82% 83% 84% 85% 86% 87% 88% 89%
## 14.0000 14.1862 15.0000 15.0000 15.0000 15.0000 15.0000 15.0000 15.0000 15.0000
## 90% 91% 92% 93% 94% 95% 96% 97% 98% 99%
## 16.0000 16.0000 18.0000 18.0000 20.0000 20.0000 20.0000 20.6374 24.8400 25.7268
## 100%
## 30.0000
%>%
eva_depurada filter(cultivo == "Mango") %>%
pull(rendimiento) %>%
quantile(probs = 0.12)
## 12%
## 3.99
%>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(coef_asimetria = skewness(rendimiento))
%>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(coef_asimetria = kurtosis(rendimiento))
<-
tabla_resumen_mango %>%
eva_depurada filter(cultivo == "Mango") %>%
group_by(departamento) %>%
summarise(
promedio_rto = mean(rendimiento),
promedio_rto_pond = weighted.mean(rendimiento, area_cosechada),
mediana_rto = median(rendimiento),
min_rto = min(rendimiento),
max_rto = max(rendimiento),
desv_est_rto = sd(rendimiento),
percentil5_rto = quantile(rendimiento, probs = 0.05),
percentil95_rto = quantile(rendimiento, probs = 0.95),
area_sembrada = sum(area_sembrada),
area_cosechada = sum(area_cosechada),
N = n()
%>%
) ungroup() %>%
arrange(desc(promedio_rto))
tabla_resumen_mango
%>%
tabla_resumen_mango mutate(across(where(is.numeric), round, digits = 2)) %>%
datatable(
rownames = FALSE,
extensions = c('Buttons', 'FixedColumns'),
options = list(
dom = 'Bfrtip',
buttons = c('excel'),
scrollX = TRUE,
fixedColumns = list(leftColumns = 1),
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
) )