---
title: "telfija"
author: "Ana María"
date: "14/6/2021"
output: word_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
#### ### librerias #####
library(readxl)
library(sqldf)
library(readr)
library("dplyr")
library(utils)
library(rgdal)
library(sp)
library(ggplot2)
library(sf)
library(broom)
library(mapproj)
library(sf)
library(cartogram)
library(magick)
library(purrr)
library(tidyr)
```


```{r Lectura de datos}
### lectura de datos #####
telefoniafija <- read_excel("C:/Users/ana_b/Downloads/Indice_telefonia_fija.xlsx")
 ## número de accesos por trimestre: Fuente Postdata
tf=telefoniafija[,-1]
pobla <- read.csv2("C:/Users/ana_b/Downloads/Internet_Fijo_Penetraci_n_Municipio (1).csv") ### población del DANE 2018
Municipios <- read_excel("C:/Users/ana_b/Downloads/DIVIPOLA_Municipios.xlsx") ### Nombre de los municipios con Departamentos y codigos :Fuente DANE
Municipios= Municipios[-c(1122:1131),] #### Elimino unos datos incesesarios
A2020= t(tf[36,]);A2020=as.numeric(A2020) ### ESTADO ACTUAL DE LAS CONEXIONES
length(A2020)
#View(A2020)
dim(tf)
dep_mun=colnames(tf);sep=strsplit(dep_mun,'-')
a=matrix(NA,nrow=869,ncol=3)
for (i in 1:2) {
  for (j in 1:nrow(a)) {
    a[j,i]=toupper(sep[[j]][i])
    
  }
}
a=as.data.frame(a)
a[,3]=A2020 ### a tiene municipio, departamento u cantidad de accesos al 2020-4
head(a)
```

```{r cruce de datos}
### para obtener las referencias de los codigos dani de departamentos y municipios
E5 <- sqldf ("select NombreM,CODIGOM,NombreD,CODIGOD,v3
             from Municipios 
             LEFT JOIN a
             ON a.V1= Municipios.NombreM AND a.V2=Municipios.NombreD ")
str(E5)
### v3 hacer refencia a la variables de accesos a internet.
pdep_mun= pobla %>%
  filter(Ano==2020 & TRIMESTRE==4)%>%
  unite('mun-dep',MUNICIPIO,DEPARTAMENTO,sep="-",remove=F)
pdep_mun[1002,5]="SAN SEBASTIAN DE MARIQUITA"
str(pdep_mun)
pde= sqldf ("select NombreM,CODIGOM,NombreD,CODIGOD,poblacion
             from Municipios 
             LEFT JOIN pdep_mun
             ON pdep_mun.MUNICIPIO= Municipios.NombreM AND pdep_mun.DEPARTAMENTO=Municipios.NombreD ")
str(pde)
View(pdep_mun)
```
## Descripción de los datos 
A continuación una descripción sobre el comportamiento del indice 

```{r}
#### Maximo de conección 
## la información se obtiene de pdep_mun
max(pdep_mun$INDICE) ### correspondiente a abijorral
pdep_mun[pdep_mun$INDICE==0,'mun-dep']

```


```{r}
final= sqldf ("select E5.NombreM,E5.CODIGOM,E5.NombreD,E5.CODIGOD,poblacion,V3,(V3*100)/poblacion as indice
             from pde 
             INNER JOIN E5
             ON pde.CODIGOM=E5.CODIGOM")
```


```{r}
str(final)
#View(final)
finalfinal= final[!is.na(final$V3),] ### tomamos los municipios que tienen informacion
#View(finalfinal)
head(finalfinal)
```


```{r}
#### comportamiento de el indice
prueba1 =finalfinal[finalfinal$indice<quantile(finalfinal$indice,.95),]
prueba2 = finalfinal[finalfinal$indice>=quantile(finalfinal$indice,.95),]
prueba2
#### Se recortan los datos para eliminar los datos muy alejados y podes el compartamiento continuo.
##3 eliminamos 
hist(prueba1$indice, freq = FALSE, main = "Histograma y densidad",
     ylab = "Densidad",xlab="Indice de Telefonía ",breaks = 15)
dx <- density(prueba1$indice)
lines(dx, lwd = 2, col = "red")
abline(v=quantile(prueba1$indice,.5),lty=2,col=4)
abline(v=quantile(prueba1$indice,.1),lty=2,col=5)
abline(v=quantile(prueba1$indice,.7),lty=2,col=5)
abline(v=mean(prueba1$indice),lty=1,col=2)
pl <- ggplot(prueba1, aes(x=0, y=indice))
pl + geom_boxplot()+ theme_bw()
```


```{r INDICE}
### hacemos la clasificacificaicon
per7=quantile(prueba1$indice,.7)
per7
per1=quantile(prueba1$indice,.1)
per1
quantile(prueba1$indice,c(.1,.2,.5))
mean(prueba1$indice)
pdep_mun=finalfinal%>%
  mutate(clasificacion=0,
         clasificacion=ifelse(indice>=per7,'i>7',clasificacion),
         clasificacion=ifelse(indice<=per3,'i<1',clasificacion),
         clasificacion=ifelse(indice<per7 & indice>per3,'0.7<i<1',clasificacion),
         )
# La clasificación se hizo en función al percentil 30 y 70, es decir, los municipios que esten por debajo del el 30% se clasifican como bajos los que esten por el encima del 70% se consideran como altos y los que esten entre el 70 y 30 % como cobertura baja

#WARNING: Las conexiones se consideran como bajas o alta estan basados en percetiles del comportasmieento general que es retrsopectiva son bajas :(

```

```{r Construcción del indice por deparatamento}

pretabla <- sqldf ("select final.NombreM,final.CODIGOM,final.NombreD,final.CODIGOD,final.v3,final.indice,pdep_mun.clasificacion
             from final 
             LEFT JOIN pdep_mun
             ON final.CODIGOM= pdep_mun.CODIGOM ")
clasi = pretabla%>%
  group_by(CODIGOD,clasificacion)%>%
  summarise(nem = n())
my_data <- mutate_all(pretabla, ~replace(., is.na(.), 'Noinfo'))
tabla1=table(my_data$NombreD,my_data$clasificacion)
tabla1
tabla2=round(prop.table(tabla1,1)*100, 5)
tabla2
```



```{r Grafica departamentos}
ggplot(data=clasi, aes(x=CODIGOD, y=nem, fill=clasificacion)) +
  labs(x = "Departamentos",y = "Porcentaje de Municipios(%)")+
  geom_bar(stat="identity", position=position_fill())+
    theme_minimal()
```

```{r}
prov <- st_read('C:/Users/ana_b/Downloads/depto')
plot(st_geometry(prov))
prov
pretabla <- sqldf ("select final.NombreM,final.CODIGOM,final.NombreD,final.CODIGOD,final.v3,final.indice,pdep_mun.clasificacion
             from final 
             LEFT JOIN pdep_mun
             ON final.CODIGOM= pdep_mun.CODIGOM ")
my_data <- mutate_all(pretabla, ~replace(., is.na(.), 'Noinfo'))
tabla1=table(my_data$NombreD,my_data$clasificacion)
head(tabla1)
tabla2=round(prop.table(tabla1,1)*100, 5)
tabla2
indice= cbind(tabla2,rownames(tabla2))
indice=as.data.frame(indice)
indice= tibble(indice)
indice$V5[5]="SANTAFE DE BOGOTA D.C"
datos_unidos <- merge(prov, indice, by.x = "NOMBRE_DPT", by.y="V5")
datos_unidos$`0.7<i<1`=as.numeric(datos_unidos$`0.7<i<1`)
datos_unidos$`i<1`=as.numeric(datos_unidos$`i<1`)
datos_unidos$`i>7`=as.numeric(datos_unidos$`i>7`)
datos_unidos$Noinfo=as.numeric(datos_unidos$Noinfo)
str(datos_unidos)
```


```{r}
mapamedio <- ggplot(data = datos_unidos) +
  geom_sf(aes(fill=`0.7<i<1`), data = datos_unidos, color='white', size=0.3) +
  guides(fill=guide_colorbar(title = "Porcentaje")) +
  scale_fill_gradient(limits= c(0,100), high = "#4c9141", low = "#f5deb3", guide = "colorbar") +
  xlab("Longitud") + ylab("Latitud") +
  ggtitle("Departamentos con accesos medios a Telefonía fija",
          subtitle = "Departamentos con la mayoria de municipios con índices entre el 0.01% y 1.7% ") + 
  theme_minimal()+
  theme(plot.title = element_text(family="Comic Sans MS", face="bold"),
        legend.position = "left")
mapamedio
# Generación de mapa que tiene la mayoría en concentración alta
mapaalto <- ggplot(data = datos_unidos) +
  geom_sf(aes(fill=`i>7`), data = datos_unidos, color='white', size=0.3) +
  guides(fill=guide_colorbar(title = "Porcentaje")) +
  scale_fill_gradient(limits= c(0,100), high = "#4c9141", low = "#f5deb3", guide = "colorbar") +
  xlab("Longitud") + ylab("Latitud") +
  ggtitle("Departamentos accesos altos a Telefonía fija",
          subtitle = "Departamentos con la mayoria de municipios con índices menores al 1.7%") +
  theme_minimal()+
  theme(plot.title = element_text(family="Comic Sans MS", face="bold"),
        legend.position = "left")
mapaalto

# Generación de mapa que tiene la mayoria en concetraciones bajas
mapabajo <- ggplot(data = datos_unidos) +
  geom_sf(aes(fill=`i<1`), data = datos_unidos, color='white', size=0.3) +
  guides(fill=guide_colorbar(title = "Porcentaje")) +
  scale_fill_gradient(limits= c(0,100), high = "#4c9141", low = "#f5deb3", guide = "colorbar") +
  xlab("Longitud") + ylab("Latitud") +
  ggtitle("Departamentos accesos bajos a Telefonía fija",
          subtitle = "Departamentos con la mayoria de municipios con índices menores al 0.01%") + 
  theme_minimal()+
  theme(plot.title = element_text(family="Comic Sans MS", face="bold"),
        legend.position = "left")
mapabajo

# Generación de mapa inicial de cloropetas. Día 09/03/2020
mapasininfo <- ggplot(data = datos_unidos) +
  geom_sf(aes(fill=Noinfo), data = datos_unidos, color='white', size=0.3) +
  guides(fill=guide_colorbar(title = "Porcentaje")) +
  scale_fill_gradient(limits= c(0,100), high = "#4c9141", low = "#f5deb3", guide = "colorbar") +
  xlab("Longitud") + ylab("Latitud") +
  ggtitle("Departamentos sin información",
          subtitle = "Departamentos con la mayoria de municipios sin información") + 
  theme_minimal()+
  theme(plot.title = element_text(family="Comic Sans MS", face="bold"),
        legend.position = "left")
mapasininfo

```



```{r}
# Guardar imagen en formato PNG
ggsave(mapaalto, filename = "mapa111.png", width = 8,height=8,dpi = 150)
ggsave(mapamedio, filename = "mapa211.png", width = 8,height=8,dpi = 150)
ggsave(mapabajo, filename = "mapa311.png", width = 8,height=8,dpi = 150)
ggsave(mapasininfo, filename = "mapa411.png", width = 8,height=8,dpi = 150)
### creacion de cartograma
```

```{r}
list.files(path = "./Mapas2", pattern = "*.png", full.names = T) %>% 
  map(image_read) %>% # lee las imagenes del directorio
  image_join() %>% # une las imagenes
  image_animate(fps=1) %>% # genera la animacion
  image_write("Accesotelefonos.gif") # la guarda en un fichero .gif
```
