Se hace lectura de los datos del Tercer Censo Nacional Agropecuario del DANE en 2014, para las veredas Gualas Bajo Humadea, Alta mira, La Castañeda, Chaparral, Guaranana y Union, todas del municipio de San MartÃn, departamento de Meta, Colombia.
datos <- read.csv2("CNA2014_S15P_50.csv")
library(dplyr)
library(ggplot2)
library(plyr)
library(reshape2)
library(patchwork)
veredasAOI <- filter(datos,COD_VEREDA==50689006 | COD_VEREDA==50689007 | COD_VEREDA==50689011
| COD_VEREDA==50689012 | COD_VEREDA==50689013 | COD_VEREDA==50689014)
veredasAOI <- select(veredasAOI, PAIS, ENCUESTA, COD_VEREDA, P_S15P168, P_S15P169)
colnames(veredasAOI) <- c("Pais","Encuesta","Cod_vereda","Sexo","Edad")
iterador <- c(50689006,50689007,50689011,50689012,50689013,50689014)
veredas <- c("Gualas Bajo Humadea","Alta mira","La Castaneda","Chaparral","Guaranana","Union")
Nomb_vereda <- c()
for(i in 1:length(veredasAOI$Cod_vereda)){
for(j in 1:length(iterador)){
if(veredasAOI$Cod_vereda[i] == iterador[j]){
Nomb_vereda[i] <- veredas[j]
}else{
next
}
}
}
veredasAOI$Nomb_vereda <- Nomb_vereda
Hombres <- veredasAOI[which(veredasAOI$Sexo == 1),]
Mujeres <- veredasAOI[which(veredasAOI$Sexo == 2),]
veredas <- c("Gualas Bajo Humadea","Alta mira","La Castaneda","Chaparral","Guaranana","Union")
mi_lista <- list()
for(k in veredas){
mi_lista[[k]] <- filter(Hombres,Nomb_vereda==k)
}
nuevos <- data.frame()
for(j in 1:length(mi_lista)){
conteo0_9 <- 0
conteo10_19 <- 0
conteo20_29 <- 0
conteo30_39 <- 0
conteo40_49 <- 0
conteo50_59 <- 0
conteo60_69 <- 0
conteo70_79 <- 0
conteo80 <- 0
for(i in (mi_lista[[j]]$Edad)){
if(i < 10){
conteo0_9 = conteo0_9 + 1
}
else if(i > 9 & i < 20){
conteo10_19 = conteo10_19 + 1
}
else if(i > 19 & i < 30){
conteo20_29 = conteo20_29 + 1
}
else if(i > 29 & i < 40){
conteo30_39 = conteo30_39 + 1
}
else if(i > 39 & i < 50){
conteo40_49 = conteo40_49 + 1
}
else if(i > 49 & i < 60){
conteo50_59 = conteo50_59 + 1
}
else if(i > 59 & i < 70){
conteo60_69 = conteo60_69 + 1
}
else if(i > 69 & i < 80){
conteo70_79 = conteo70_79 + 1
}
else if(i > 79){
conteo80 = conteo80 + 1
}
else(next)
}
nuevos <- rbind(nuevos,data.frame(Vereda=rep(names(mi_lista[j]),9),Genero=rep("Masculino",9),Edad=c("0-9","10-19","20-29","30-39","40-49","50-59","60-69","70-79",">80") , cantidad=-1*c(conteo0_9,conteo10_19,conteo20_29,conteo30_39,conteo40_49,conteo50_59,conteo60_69,conteo70_79,conteo80)))
next
}
## Femenino
mi_lista <- list()
for(k in veredas){
mi_lista[[k]] <- filter(Mujeres,Nomb_vereda==k)
}
nuevos2 <- data.frame()
for(j in 1:length(mi_lista)){
conteo0_9 <- 0
conteo10_19 <- 0
conteo20_29 <- 0
conteo30_39 <- 0
conteo40_49 <- 0
conteo50_59 <- 0
conteo60_69 <- 0
conteo70_79 <- 0
conteo80 <- 0
for(i in (mi_lista[[j]]$Edad)){
if(i < 10){
conteo0_9 = conteo0_9 + 1
}
else if(i > 9 & i < 20){
conteo10_19 = conteo10_19 + 1
}
else if(i > 19 & i < 30){
conteo20_29 = conteo20_29 + 1
}
else if(i > 29 & i < 40){
conteo30_39 = conteo30_39 + 1
}
else if(i > 39 & i < 50){
conteo40_49 = conteo40_49 + 1
}
else if(i > 49 & i < 60){
conteo50_59 = conteo50_59 + 1
}
else if(i > 59 & i < 70){
conteo60_69 = conteo60_69 + 1
}
else if(i > 69 & i < 80){
conteo70_79 = conteo70_79 + 1
}
else if(i > 79){
conteo80 = conteo80 + 1
}
else(next)
}
nuevos2 <- rbind(nuevos2,data.frame(Vereda=rep(names(mi_lista[j]),9),Genero=rep("Femenino",9),Edad=c("0-9","10-19","20-29","30-39","40-49","50-59","60-69","70-79",">80"), cantidad=c(conteo0_9,conteo10_19,conteo20_29,conteo30_39,conteo40_49,conteo50_59, conteo60_69,conteo70_79,conteo80)))
next
}
La base de datos debe quedar organizada de la siguiente manera:
datos <- rbind(nuevos,nuevos2)
datos$Edad <- factor(datos$Edad,levels = datos$Edad, labels=datos$Edad)
head(datos,12)
## Vereda Genero Edad cantidad
## 1 Gualas Bajo Humadea Masculino 0-9 -23
## 2 Gualas Bajo Humadea Masculino 10-19 -27
## 3 Gualas Bajo Humadea Masculino 20-29 -27
## 4 Gualas Bajo Humadea Masculino 30-39 -14
## 5 Gualas Bajo Humadea Masculino 40-49 -33
## 6 Gualas Bajo Humadea Masculino 50-59 -33
## 7 Gualas Bajo Humadea Masculino 60-69 -15
## 8 Gualas Bajo Humadea Masculino 70-79 -7
## 9 Gualas Bajo Humadea Masculino >80 -4
## 10 Alta mira Masculino 0-9 -4
## 11 Alta mira Masculino 10-19 -4
## 12 Alta mira Masculino 20-29 -2
Los valores del género masculino se dejan en negativo para poder acomodarlo en el gráfico de la pirámide poblacional.
veredas <- c("Gualas Bajo Humadea","Alta mira","La Castaneda","Chaparral","Guaranana","Union")
ListaDatos <- list()
for(j in veredas){
ListaDatos[[j]] <- filter(datos,Vereda==j)
}
ListaGraficos <- list()
for(i in 1:length(ListaDatos)){
ListaGraficos[[i]] <- ggplot(ListaDatos[[i]],aes(x=Edad,y=cantidad, fill=Genero))+
geom_bar(stat="identity",width = 0.7)+
scale_fill_manual(values = c("#FF6666","#26ABDD"))+
scale_y_continuous(limit = c(-35,35),breaks=seq(-40,40,10),labels = as.character(c(40,30,20,10,0,10,20,30,40)))+
coord_flip()+
theme_bw()+
xlab("Edad (años)")+
ylab("Número de personas")+
ggtitle(paste(i,") ", veredas[i]))+
theme(plot.title = element_text(hjust = 0.5))+
theme(legend.position = "bottom")
}
Collage <- (ListaGraficos[[1]]+ListaGraficos[[2]]) / (ListaGraficos[[3]]+ListaGraficos[[4]]) /
(ListaGraficos[[5]]+ListaGraficos[[6]])+
plot_annotation(title = 'Pirámide poblacional por vereda de la zona de estudio',theme = theme(plot.title = element_text(size = 18)))&
theme(plot.title = element_text(hjust = 0.5),plot.background = element_rect(fill="white"))
ggsave("Collage.png", plot=Collage,width = 30,height = 37.5,units="cm")
Finalmente, la pirámide poblacional por vereda queda asÃ: