library(tidyverse)
library(ggrepel)
library(scales)
library(formattable)
library(kableExtra)
colores<- c('#a6cee3','#1f78b4','#b2df8a','#33a02c','#fb9a99','#e31a1c','#fdbf6f','#ff7f00','#cab2d6','#6a3d9a','#ffff99','#b15928')
temp <- tempfile()
download.file("https://www.indec.gob.ar/ftp/cuadros/menusuperior/engho/engho2018_gastos.zip",temp)
gastos <- read.table(unzip(temp, "engho2018_gastos.txt"),header = T, sep = "|", dec=".",fileEncoding = "utf-8" )
unlink(temp)


temp <- tempfile()
download.file("https://www.indec.gob.ar/ftp/cuadros/menusuperior/engho/engho2018_hogares.zip",temp)
hogar <- read.table(unzip(temp, "engho2018_hogares.txt"),header = T, sep = "|", dec=".",fileEncoding = "utf-8" )
unlink(temp)

temp <- tempfile()
download.file("https://www.indec.gob.ar/ftp/cuadros/menusuperior/engho/engho2018_personas.zip",temp)
personas <- read.table(unzip(temp, "engho2018_personas.txt"),header = T, sep = "|", dec=".",fileEncoding = "utf-8" )
unlink(temp)

temp <- tempfile()
download.file("https://www.indec.gob.ar/ftp/cuadros/menusuperior/engho/engho2018_articulos.zip",temp)
articulos <- read.table(unzip(temp,"engho2018_articulos.txt" ),header = T, sep = "|", dec=".",fileEncoding = "utf-8" )
unlink(temp)

articulos$division_desc[articulos$division_desc=="VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES"]<- "VIVIENDA, AGUA, ELECTRICIDAD, \n GAS Y OTROS COMBUSTIBLES"

articulos$division_desc[articulos$division_desc=="EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR" ] <- "EQUIPAMIENTO Y MANTENIMIENTO \n DEL HOGAR" 

articulos$division_desc[articulos$division_desc=="ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS" ] <- "ALIMENTOS Y BEBIDAS \n NO ALCOHÓLICAS"


hogarcor<- hogar %>% filter(provincia==18)

gastocor <- gastos %>% filter(provincia==18)

personacor<- personas %>% filter(provincia==18)

gastopercor<- right_join(personacor, gastocor)
gastopercor<- gastopercor %>% filter(provincia==18) %>% filter(!is.na(cp03))

gastopercor <- gastopercor %>% mutate( edad=case_when(cp03>=18 & cp03<29 ~ "18 a 28",
                                     cp03>=29 & cp03<40 ~ "29 a 39",
                                     cp03>=40 & cp03<51 ~ "40 a 50",
                                     cp03>=51 & cp03<62 ~ "51 a 61",
                                     cp03>=61 ~ "61+"))
gastopercormas<- gastopercor %>% filter(cp03>=18)
gastopercormenos<- gastopercor %>% filter(cp03<18)
divisionesgas<- articulos %>% select(division, division_desc) %>% unique()



divisioneseng<- articulos %>%  select(division, division_desc) %>% separate(division, into=c("a", "b"), sep="A")
divisioneseng<- unique(divisioneseng)
divisioneseng<- divisioneseng %>% rename(division="b") %>% select(-"a")
divisioneseng$division<- as.numeric(divisioneseng$division)

Base de Hogares de la ENGHO

gastohog<- hogarcor %>% select(id, pondera, qinpch_p, gastot) %>% bind_cols(hogarcor[,73:84] )
gastohog<- gastohog %>% pivot_longer(-c(id,pondera, qinpch_p, gastot))

divisiones<-data.frame(name=c(unique(gastohog$name)))
divisiones <- divisiones %>% bind_cols(division=c(seq(1,12, by=1)))

gastohog<-left_join(gastohog, divisiones)
gastohog<- left_join(gastohog,divisioneseng)

Gastocorr<- gastohog %>% group_by(division_desc) %>% summarise("Porcentaje en el total de Gastos"=formattable::percent(sum(value %*% pondera)/sum( gastot %*% pondera )), sum(value%*%pondera))


Gastocorr<- Gastocorr %>% arrange(`Porcentaje en el total de Gastos`)
Gastocorr$division_desc<- factor(Gastocorr$division_desc, levels = Gastocorr$division_desc)

gastoxquin<- gastohog %>% group_by(qinpch_p) %>% mutate(gxquinpcp=sum(value %*% pondera)) %>% ungroup()


GastoPorDiv<- gastoxquin %>%  group_by(qinpch_p, division_desc) %>% summarise("Porcentaje en el total de Gastos por Quintil"=formattable::percent(sum(value %*%pondera)/gxquinpcp))
GastoPorDiv<- GastoPorDiv %>% distinct( qinpch_p, division_desc, .keep_all = T) 
GastoPorDiv<- GastoPorDiv %>% arrange(`Porcentaje en el total de Gastos por Quintil`) 

Gráficos estáticos

Composición de los gastos en el total del aglomerado de Corrientes.

grafico1<- Gastocorr %>%  ggplot(mapping = aes(x=division_desc,y= `Porcentaje en el total de Gastos`, fill=division_desc, label=`Porcentaje en el total de Gastos`)) + geom_segment(aes(x=division_desc, xend=division_desc, y =0, yend=`Porcentaje en el total de Gastos`, color=colores), show.legend = F, size=1.5)+ geom_point(color="#377eb8", size=3, alpha=1, show.legend = F) + geom_text(show.legend = F, position =position_nudge(y=0.055))+ labs(fill="", title ="Composición de gastos en Corrientes", subtitle = "Encuesta Nacional de Gastos de los Hogares 2017-2018", caption = "Fuente: ENGHO-INDEC")+ xlab("") + ylab("Porcentaje") + ggthemes::theme_base()+ theme(text =element_text(size= 10) ,axis.title = element_text(), legend.position = ("right") , strip.background = element_rect(fill = "WHITE", colour = "BLACK"), axis.text.x = element_blank(), panel.background = element_blank(), panel.grid.major.x = element_blank(),  title = element_text(size = 10)) + scale_fill_manual(values = colores) +ylim(c(0,0.35))+  coord_flip()
grafico1

Composición de los gastos en el total del aglomerado de Corrientes dividido por quintil de IPCH.

grafico2<- GastoPorDiv %>%  ggplot(mapping = aes(qinpch_p, `Porcentaje en el total de Gastos por Quintil`, fill=division_desc, label=`Porcentaje en el total de Gastos por Quintil`)) + geom_col(show.legend = T)  + labs(fill="", title ="Composición de gastos por quintil", subtitle = "Encuesta Nacional de Gastos de los Hogares 2017-2018", caption = "Fuente: ENGHO-INDEC")+ xlab("Quintil de IPCH (Corrientes)") + ylab("Porcentaje") +  ggthemes::theme_base()+ theme(text =element_text(size= 10) , legend.position = ("right") , strip.background = element_rect(fill = "WHITE", colour = "BLACK"), panel.background = element_blank(), panel.grid.major.x = element_blank(), title = element_text(size = 10)) + scale_fill_manual(values = colores)   + coord_flip()
grafico2

Gráficos interactivos

grafico3<- grafico2 + labs(fill="", title ="Composición de gastos por quintil en Corrientes \n ENGHO 2017-2018 - INDEC")


grafico4<-  Gastocorr %>%  ggplot(mapping = aes(x=division_desc,y= `Porcentaje en el total de Gastos`, fill=division_desc, label=`Porcentaje en el total de Gastos`)) + geom_segment(aes(x=division_desc, xend=division_desc, y =0, yend=`Porcentaje en el total de Gastos`, color=colores), show.legend = F, size=1.5)+ geom_point( fill="BLACK",size=3, alpha=1, show.legend = F) + labs(fill="", title ="Composición de gastos en Corrientes \n ENGHO 2017-2018  (INDEC)") + xlab("") + ylab("Porcentaje") + ggthemes::theme_base()+ theme(text =element_text(size= 10) ,axis.title = element_text(), legend.position = ("right") , strip.background = element_rect(fill = "WHITE", colour = "BLACK"), axis.text.x = element_blank(), panel.background = element_blank(), panel.grid.major.x = element_blank(),  title = element_text(size = 10)) + scale_fill_manual(values = colores) +ylim(c(0,0.40))+  coord_flip()

grafico3<- plotly:: ggplotly(grafico3,tooltip = c("fill","y"))
grafico4<- plotly::ggplotly(grafico4, tooltip=c("y"))

Composición de los gastos en el total del aglomerado de Corrientes.

plotly::hide_legend(grafico3)

Composición de los gastos en el total del aglomerado de Corrientes dividido por quintil de IPCH.

plotly::hide_legend(grafico4)

Base Gastos

gastocorforma<- gastocor %>% filter(!is.na(forma_pago))
modopago<- gastocorforma %>% group_by(division) %>% mutate(ponderadiv=sum(pondera)) %>% ungroup() 
modopago<- modopago %>% group_by(division,forma_pago) %>% summarise(sum(pondera),ponderadiv)
modopago <- unique(modopago)
modopago<- modopago %>% mutate(porcentaje=percent(`sum(pondera)`/ponderadiv))

formapago<- data.frame(forma_pago=seq(1,9, by=1), forma_p=c("Contado", "Tarjeta Débito", "Tarjeta Crédito","A crédito \n (libreta, fiado,etc)", "Recibido o retirado \n de su trabajo", "Tarjeta prepaga", "Transf. Bcria, \n HomeBaking, Deb. Aut.", "Producción Propia", "Otros"  ))

modopago<- left_join(modopago, divisionesgas)
modopago<- left_join(modopago,formapago)
tabla1<- modopago[,c(5,6,7)]
tabla1 <- tabla1 %>% relocate(division_desc, before=forma_p) %>% rename(Division=division_desc, "Forma de pago"= forma_p, Porcentaje=porcentaje)

Forma de pago según la categoría de los gastos.

 tabla1 %>% kbl() %>% kable_material_dark()
Division Forma de pago Porcentaje
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS Contado 84.57%
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS Tarjeta Débito 4.76%
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS Tarjeta Crédito 3.52%
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS A crédito (libreta, fiado,etc) 2.35%
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS Recibido o retirado de su trabajo 4.52%
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS Producción Propia 0.26%
ALIMENTOS Y BEBIDAS NO ALCOHÓLICAS Otros 0.01%
BEBIDAS ALCOHÓLICAS Y TABACO Contado 89.27%
BEBIDAS ALCOHÓLICAS Y TABACO Tarjeta Débito 2.24%
BEBIDAS ALCOHÓLICAS Y TABACO Tarjeta Crédito 4.45%
BEBIDAS ALCOHÓLICAS Y TABACO A crédito (libreta, fiado,etc) 0.89%
BEBIDAS ALCOHÓLICAS Y TABACO Recibido o retirado de su trabajo 2.88%
BEBIDAS ALCOHÓLICAS Y TABACO Otros 0.27%
PRENDAS DE VESTIR Y CALZADO Contado 86.35%
PRENDAS DE VESTIR Y CALZADO Tarjeta Débito 2.06%
PRENDAS DE VESTIR Y CALZADO Tarjeta Crédito 9.22%
PRENDAS DE VESTIR Y CALZADO A crédito (libreta, fiado,etc) 2.31%
PRENDAS DE VESTIR Y CALZADO Recibido o retirado de su trabajo 0.05%
VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES Contado 96.37%
VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES Tarjeta Débito 1.18%
VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES Tarjeta Crédito 0.96%
VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES A crédito (libreta, fiado,etc) 1.08%
VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES Transf. Bcria, HomeBaking, Deb. Aut. 0.16%
VIVIENDA, AGUA, ELECTRICIDAD, GAS Y OTROS COMBUSTIBLES Otros 0.25%
EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR Contado 75.96%
EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR Tarjeta Débito 4.70%
EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR Tarjeta Crédito 8.75%
EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR A crédito (libreta, fiado,etc) 6.82%
EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR Recibido o retirado de su trabajo 3.58%
EQUIPAMIENTO Y MANTENIMIENTO DEL HOGAR Otros 0.19%
SALUD Contado 90.00%
SALUD Tarjeta Débito 2.40%
SALUD Tarjeta Crédito 4.79%
SALUD A crédito (libreta, fiado,etc) 1.98%
SALUD Transf. Bcria, HomeBaking, Deb. Aut. 0.29%
SALUD Otros 0.54%
TRANSPORTE Contado 84.48%
TRANSPORTE Tarjeta Débito 1.47%
TRANSPORTE Tarjeta Crédito 2.71%
TRANSPORTE A crédito (libreta, fiado,etc) 2.24%
TRANSPORTE Tarjeta prepaga 8.34%
TRANSPORTE Transf. Bcria, HomeBaking, Deb. Aut. 0.05%
TRANSPORTE Otros 0.71%
COMUNICACIONES Contado 89.26%
COMUNICACIONES Tarjeta Débito 3.65%
COMUNICACIONES Tarjeta Crédito 2.54%
COMUNICACIONES A crédito (libreta, fiado,etc) 2.73%
COMUNICACIONES Recibido o retirado de su trabajo 0.04%
COMUNICACIONES Transf. Bcria, HomeBaking, Deb. Aut. 1.24%
COMUNICACIONES Otros 0.54%
RECREACIÓN Y CULTURA Contado 89.08%
RECREACIÓN Y CULTURA Tarjeta Débito 3.36%
RECREACIÓN Y CULTURA Tarjeta Crédito 4.95%
RECREACIÓN Y CULTURA A crédito (libreta, fiado,etc) 2.07%
RECREACIÓN Y CULTURA Transf. Bcria, HomeBaking, Deb. Aut. 0.27%
RECREACIÓN Y CULTURA Otros 0.27%
EDUCACIÓN Contado 97.20%
EDUCACIÓN Tarjeta Débito 0.60%
EDUCACIÓN Otros 2.21%
RESTAURANTES Y HOTELES Contado 91.94%
RESTAURANTES Y HOTELES Tarjeta Débito 1.63%
RESTAURANTES Y HOTELES Tarjeta Crédito 2.82%
RESTAURANTES Y HOTELES A crédito (libreta, fiado,etc) 1.89%
RESTAURANTES Y HOTELES Recibido o retirado de su trabajo 1.40%
RESTAURANTES Y HOTELES Otros 0.32%
BIENES Y SERVICIOS VARIOS Contado 83.41%
BIENES Y SERVICIOS VARIOS Tarjeta Débito 5.28%
BIENES Y SERVICIOS VARIOS Tarjeta Crédito 4.17%
BIENES Y SERVICIOS VARIOS A crédito (libreta, fiado,etc) 2.72%
BIENES Y SERVICIOS VARIOS Recibido o retirado de su trabajo 2.39%
BIENES Y SERVICIOS VARIOS Transf. Bcria, HomeBaking, Deb. Aut. 1.65%
BIENES Y SERVICIOS VARIOS Otros 0.38%

Gráficos estáticos.

Forma de pago por división de los gastos.

grafico5<- modopago %>% ggplot(mapping=aes(x=division_desc, y=porcentaje, fill=forma_p)) + geom_col()+ labs(fill="", title ="Forma de pago por división de gastos", subtitle = "Encuesta Nacional de Gastos de los Hogares 2017-2018", caption = "Fuente: ENGHO-INDEC")+ xlab("") + ylab("Porcentaje") + ggthemes::theme_base() +theme(text =element_text(size= 10) , legend.position = ("right") , strip.background = element_rect(fill = "WHITE", colour = "BLACK"), panel.background = element_blank(), panel.grid.major.x = element_blank(), title = element_text(size = 10)) + scale_fill_manual(values = colores)   + coord_flip()
grafico5

Modo de adquisición por división de los gastos.

modopago<- gastocor %>% filter(!is.na(modo_adq)) %>%  group_by(division) %>% mutate(ponderadiv=sum(pondera)) %>% ungroup() 
modopago<- modopago %>% group_by(division,modo_adq) %>% summarise(sum(pondera),ponderadiv)
modopago <- unique(modopago)
modopago<- modopago %>% mutate(porcentaje=percent(`sum(pondera)`/ponderadiv))
modoadq<- data.frame(modo_adq=c(1,2,3), modoad=c("En el negocio", "Internet", "Teléfono") )

modopago<- left_join(modopago, divisionesgas)
modopago<- left_join(modopago,modoadq)

grafico7<- modopago %>% ggplot(mapping=aes(x=division_desc, y=porcentaje, fill=modoad)) + geom_col()+ labs(fill="", title ="Modo de adquisición por división de gastos", subtitle = "Encuesta Nacional de Gastos de los Hogares 2017-2018", caption = "Fuente: ENGHO-INDEC")+ xlab("") + ylab("Porcentaje") + ggthemes::theme_base() +theme(text =element_text(size= 10) , legend.position = ("right") , strip.background = element_rect(fill = "WHITE", colour = "BLACK"), panel.background = element_blank(), panel.grid.major.x = element_blank(), title = element_text(size = 10)) + scale_fill_manual(values = colores)   + coord_flip()
grafico7

Gráficos dinámicos

Forma de pago por división de los gastos.

grafico6<- grafico5 + labs(fill="", title ="Forma de pago por división de gastos \n ENGHO 2017-2018 - INDEC")
grafico6<- plotly::ggplotly(grafico6, tooltip = c("forma_p","y"))
plotly::hide_legend(grafico6)

Modo de adquisición por división de los gastos.

grafico8<- grafico7 + labs(fill="", title ="Modo de adquisición por división de gastos \n ENGHO 2017-2018 - INDEC")
grafico8<- plotly::ggplotly(grafico8, tooltip = c("modoad","y"))
plotly::hide_legend(grafico8)