Base de Datos

Vamos a crear una base de datos nueva, a partir de una base de datos a nivel tomas o usuario, vamos a agregar las variables según corresponda a nivel de colonia.

Cargamos la base de datos

aguah2021<- read.csv("a2021.csv", 
    header=T, 
    na.strings= c('NA', " ", "", "NO TIENE", -99), 
    quote="\"", 
    dec=".",
    stringsAsFactors = FALSE)
dim(aguah2021)
## [1] 296802     31

Colonias

¿Cuántas colonias hay?

paste("El número de colonias de Hermosillo es de:", length(unique(aguah2021$COLONIA)))
## [1] "El número de colonias de Hermosillo es de: 769"

Agregar variables

Figura 1: Diagrama de flujo para saber qué agregar y cómo.

Figura 1: Diagrama de flujo para saber qué agregar y cómo.

Consumo em metros cúbicos para el mes de enero.

col_m3enero<-aguah2021 %>%
              group_by(COLONIA) %>%
              dplyr::summarize(MeanEneM3 = mean(M3_ENE, na.rm=TRUE))
head(col_m3enero)
## # A tibble: 6 × 2
##   COLONIA               MeanEneM3
##   <chr>                     <dbl>
## 1 15A                        15.5
## 2 22 DE SEPTIEMBRE           15.7
## 3 4 DE MARZO (INVASION)      13.1
## 4 5 DE MAYO                  16.4
## 5 5 DE MAYO SECTOR A         15.6
## 6 ADOLFO DE LA HUERTA        18.9

¿Cuál colonia es la que más consume? ¿Cuál consume menos?

col_m3enero[which.max(col_m3enero$MeanEneM3),]
## # A tibble: 1 × 2
##   COLONIA               MeanEneM3
##   <chr>                     <dbl>
## 1 PARQUE INDUSTRIAL NTE     1610.
col_m3enero[which.min(col_m3enero$MeanEneM3),]
## # A tibble: 1 × 2
##   COLONIA   MeanEneM3
##   <chr>         <dbl>
## 1 EL RECODO      5.56

Número de tomas por colonia.

col_tomas<-aguah2021 %>%
              group_by(COLONIA) %>%
              summarise(TomasTotales = n())

¿Cuál colonia es la que tiene más tomas? ¿Cuál menos?

col_tomas[which.max(col_tomas$TomasTotales),]
## # A tibble: 1 × 2
##   COLONIA                 TomasTotales
##   <chr>                          <int>
## 1 PUERTA REAL RESIDENCIAL         7340
col_tomas[which.min(col_tomas$TomasTotales),]
## # A tibble: 1 × 2
##   COLONIA           TomasTotales
##   <chr>                    <int>
## 1 AMPLIACION OLIVOS            1

Veamos ahora otra variable “TIPO_FACTURA_ENE”. Aquí podriamos sacar la proporción de los consumos con “ESTIMADO” por colonia.

unique(aguah2021$TIPO_FACTURA_ENE)
## [1] "MEDIDO"   "DIRECTO"  "ESTIMADO" NA
col_tipoEne<-aguah2021 %>%
            group_by(COLONIA) %>%
            summarize(medido = (sum(TIPO_FACTURA_ENE == "MEDIDO")/n())*100)
head(col_tipoEne)
## # A tibble: 6 × 2
##   COLONIA               medido
##   <chr>                  <dbl>
## 1 15A                     40  
## 2 22 DE SEPTIEMBRE        52.1
## 3 4 DE MARZO (INVASION)   NA  
## 4 5 DE MAYO               NA  
## 5 5 DE MAYO SECTOR A      37.5
## 6 ADOLFO DE LA HUERTA     56.9
aguah2021 %>%
  select(COLONIA, TIPO_FACTURA_ENE, TARIFA,  ) %>%
  filter(TIPO_FACTURA_ENE == "MEDIDO" & COLONIA == "5 DE MAYO") %>%
  head()
##     COLONIA TIPO_FACTURA_ENE    TARIFA
## 1 5 DE MAYO           MEDIDO DOMESTICO
## 2 5 DE MAYO           MEDIDO DOMESTICO
## 3 5 DE MAYO           MEDIDO DOMESTICO
## 4 5 DE MAYO           MEDIDO DOMESTICO
## 5 5 DE MAYO           MEDIDO DOMESTICO
## 6 5 DE MAYO           MEDIDO DOMESTICO

Tidyverse es muy sensible a las celdas con valores “NA”.

col_tipoEne<-aguah2021 %>%
            group_by(COLONIA) %>%
            summarize(medido = (sum(TIPO_FACTURA_ENE == "MEDIDO", na.rm=TRUE)/n())*100)
head(col_tipoEne)
## # A tibble: 6 × 2
##   COLONIA               medido
##   <chr>                  <dbl>
## 1 15A                     40  
## 2 22 DE SEPTIEMBRE        52.1
## 3 4 DE MARZO (INVASION)   22.9
## 4 5 DE MAYO               47.2
## 5 5 DE MAYO SECTOR A      37.5
## 6 ADOLFO DE LA HUERTA     56.9
tail(col_tipoEne)
## # A tibble: 6 × 2
##   COLONIA        medido
##   <chr>           <dbl>
## 1 VISTA BELLA      90.9
## 2 VISTA DEL LAGO   75  
## 3 VISTA DEL SOL    73.1
## 4 VISTA REAL       35.6
## 5 VIÑEDOS          48.4
## 6 Y GRIEGA         43.4

No podemos saber cuánta agua en total consume una colonia con demasiados consumos estimados.

Crear una sola base de datos

totales1 <- merge(col_tomas,col_tipoEne,by="COLONIA")
totales2<- merge(totales1,col_m3enero,by="COLONIA")
head(totales2)
##                 COLONIA TomasTotales medido MeanEneM3
## 1                   15A           35  40.00     15.54
## 2      22 DE SEPTIEMBRE          242  52.07     15.69
## 3 4 DE MARZO (INVASION)          510  22.94     13.14
## 4             5 DE MAYO         1046  47.23     16.37
## 5    5 DE MAYO SECTOR A           40  37.50     15.57
## 6   ADOLFO DE LA HUERTA          390  56.92     18.92

Exportar a csv

write.csv(totales2, file = "totales2.csv", row.names = F, fileEncoding="UTF-8")