library(rio)
positivos = import("positivos_final.csv")
fallecidos = import("fallecidos_final.csv")
elecciones = import("elecciones_final.csv")
censo = import("censo_final.csv")
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(rio)

#Juntar elecciones

names(elecciones)
##  [1] "UBIGEO"                   "DEPARTAMENTO"            
##  [3] "PROVINCIA"                "DISTRITO"                
##  [5] "ELEC.TIPO_ELECCION"       "ELEC.MESA_DE_VOTACION"   
##  [7] "ELEC.DESCRIP_ESTADO_ACTA" "ELEC.TIPO_OBSERVACION"   
##  [9] "ELEC.N_CVAS"              "ELEC.N_ELEC_HABIL"       
## [11] "ELEC.VOTOS_P1"            "ELEC.VOTOS_P2"           
## [13] "ELEC.VOTOS_VB"            "ELEC.VOTOS_VN"           
## [15] "ELEC.VOTOS_VI"
str(elecciones)
## 'data.frame':    86488 obs. of  15 variables:
##  $ UBIGEO                  : int  10101 10101 10101 10101 10101 10201 10101 10107 10112 10112 ...
##  $ DEPARTAMENTO            : chr  "AMAZONAS" "AMAZONAS" "AMAZONAS" "AMAZONAS" ...
##  $ PROVINCIA               : chr  "CHACHAPOYAS" "CHACHAPOYAS" "CHACHAPOYAS" "CHACHAPOYAS" ...
##  $ DISTRITO                : chr  "CHACHAPOYAS" "CHACHAPOYAS" "CHACHAPOYAS" "CHACHAPOYAS" ...
##  $ ELEC.TIPO_ELECCION      : chr  "PRESIDENCIAL" "PRESIDENCIAL" "PRESIDENCIAL" "PRESIDENCIAL" ...
##  $ ELEC.MESA_DE_VOTACION   : int  13 26 30 36 40 148 59 90 117 119 ...
##  $ ELEC.DESCRIP_ESTADO_ACTA: chr  "CONTABILIZADA" "CONTABILIZADA" "CONTABILIZADA" "CONTABILIZADA" ...
##  $ ELEC.TIPO_OBSERVACION   : logi  NA NA NA NA NA NA ...
##  $ ELEC.N_CVAS             : int  220 144 129 202 228 171 220 138 178 185 ...
##  $ ELEC.N_ELEC_HABIL       : int  300 300 300 252 300 300 300 213 240 240 ...
##  $ ELEC.VOTOS_P1           : int  115 71 71 66 125 112 90 93 113 116 ...
##  $ ELEC.VOTOS_P2           : int  87 58 50 105 87 51 101 34 54 58 ...
##  $ ELEC.VOTOS_VB           : int  NA NA NA 5 NA 4 7 3 3 3 ...
##  $ ELEC.VOTOS_VN           : int  18 15 8 26 16 4 22 8 8 8 ...
##  $ ELEC.VOTOS_VI           : int  NA NA NA NA NA NA NA NA NA NA ...
elecciones <- elecciones %>%
  group_by(DEPARTAMENTO, PROVINCIA) %>%
  summarise(
    ELEC.N_CVAS = sum(ELEC.N_CVAS, na.rm = TRUE),
    ELEC.N_ELEC_HABIL = sum(ELEC.N_ELEC_HABIL, na.rm = TRUE),
    ELEC.VOTOS_PL = sum(ELEC.VOTOS_P1, na.rm = TRUE),
    ELEC.VOTOS_FP = sum(ELEC.VOTOS_P2, na.rm = TRUE),
    ELEC.VOTOS_VB = sum(ELEC.VOTOS_VB, na.rm = TRUE),
    ELEC.VOTOS_VN = sum(ELEC.VOTOS_VN, na.rm = TRUE),
    ELEC.VOTOS_VI = sum(ELEC.VOTOS_VI, na.rm = TRUE)
  )
## `summarise()` has grouped output by 'DEPARTAMENTO'. You can override using the
## `.groups` argument.

#Juntar positivos

names(positivos)
##  [1] "FECHA_CORTE"          "DEPARTAMENTO"         "PROVINCIA"           
##  [4] "DISTRITO"             "posi.METODODX"        "posi.EDAD"           
##  [7] "posi.SEXO"            "posi.FECHA_RESULTADO" "posi.UBIGEO"         
## [10] "posi.id_persona"
str(positivos)
## 'data.frame':    1022620 obs. of  10 variables:
##  $ FECHA_CORTE         : int  20241203 20241203 20241203 20241203 20241203 20241203 20241203 20241203 20241203 20241203 ...
##  $ DEPARTAMENTO        : chr  "TUMBES" "TUMBES" "SAN MARTIN" "PIURA" ...
##  $ PROVINCIA           : chr  "ZARUMILLA" "ZARUMILLA" "SAN MARTIN" "SULLANA" ...
##  $ DISTRITO            : chr  "AGUAS VERDES" "ZARUMILLA" "TARAPOTO" "IGNACIO ESCUDERO" ...
##  $ posi.METODODX       : chr  "AG" "AG" "AG" "AG" ...
##  $ posi.EDAD           : int  52 42 48 43 42 83 47 55 51 57 ...
##  $ posi.SEXO           : chr  "MASCULINO" "FEMENINO" "MASCULINO" "FEMENINO" ...
##  $ posi.FECHA_RESULTADO: int  20201229 20201229 20201230 20201216 20201230 20201230 20201218 20201212 20201230 20201229 ...
##  $ posi.UBIGEO         : int  240302 240301 220901 200603 200603 220901 200603 200801 200603 230101 ...
##  $ posi.id_persona     : int  233066 307679 301845 1063754 909317 524671 924272 716456 775082 126119 ...

#Crear variable masculino y femenino

positivos$posi.Sexo_real <- ifelse(positivos$posi.SEXO == "MASCULINO", 1, -1)
positivos$posi.MASCULINO <- ifelse(positivos$posi.Sexo_real == 1, 1, NA)
positivos$posi.FEMENINO <- ifelse(positivos$posi.Sexo_real == -1, -1, NA)

#Crear variable que contabilice el total

positivos$posi.CANTIDAD <- ifelse(positivos$posi.SEXO == "MASCULINO", 1, ifelse(positivos$posi.SEXO == "FEMENINO", 1, NA))
str(positivos)
## 'data.frame':    1022620 obs. of  14 variables:
##  $ FECHA_CORTE         : int  20241203 20241203 20241203 20241203 20241203 20241203 20241203 20241203 20241203 20241203 ...
##  $ DEPARTAMENTO        : chr  "TUMBES" "TUMBES" "SAN MARTIN" "PIURA" ...
##  $ PROVINCIA           : chr  "ZARUMILLA" "ZARUMILLA" "SAN MARTIN" "SULLANA" ...
##  $ DISTRITO            : chr  "AGUAS VERDES" "ZARUMILLA" "TARAPOTO" "IGNACIO ESCUDERO" ...
##  $ posi.METODODX       : chr  "AG" "AG" "AG" "AG" ...
##  $ posi.EDAD           : int  52 42 48 43 42 83 47 55 51 57 ...
##  $ posi.SEXO           : chr  "MASCULINO" "FEMENINO" "MASCULINO" "FEMENINO" ...
##  $ posi.FECHA_RESULTADO: int  20201229 20201229 20201230 20201216 20201230 20201230 20201218 20201212 20201230 20201229 ...
##  $ posi.UBIGEO         : int  240302 240301 220901 200603 200603 220901 200603 200801 200603 230101 ...
##  $ posi.id_persona     : int  233066 307679 301845 1063754 909317 524671 924272 716456 775082 126119 ...
##  $ posi.Sexo_real      : num  1 -1 1 -1 -1 -1 -1 1 1 1 ...
##  $ posi.MASCULINO      : num  1 NA 1 NA NA NA NA 1 1 1 ...
##  $ posi.FEMENINO       : num  NA -1 NA -1 -1 -1 -1 NA NA NA ...
##  $ posi.CANTIDAD       : num  1 1 1 1 1 1 1 1 1 1 ...
positivos <- positivos %>%
  group_by(DEPARTAMENTO, PROVINCIA) %>%
  summarise(
    posi.EDAD_MEDIA = mean(posi.EDAD, na.rm = TRUE),
    posi.MASCULINO = sum(posi.MASCULINO, na.rm = TRUE),
    posi.FEMENINO = sum(posi.FEMENINO, na.rm = TRUE),
    posi.CANTIDAD = sum(posi.CANTIDAD, na.rm = TRUE)
  )
## `summarise()` has grouped output by 'DEPARTAMENTO'. You can override using the
## `.groups` argument.
positivos$posi.FEMENINO <- abs(positivos$posi.FEMENINO)

#Juntar fallecidos

names(fallecidos)
##  [1] "falle.FECHA_CORTE"         "falle.FECHA_FALLECIMIENTO"
##  [3] "falle.EDAD_DECLARADA"      "falle.SEXO"               
##  [5] "falle.CLASIFICACION_DEF"   "DEPARTAMENTO"             
##  [7] "PROVINCIA"                 "DISTRITO"                 
##  [9] "UBIGEO"                    "UUID"
str(fallecidos)
## 'data.frame':    95331 obs. of  10 variables:
##  $ falle.FECHA_CORTE        : int  20240317 20240317 20240317 20240317 20240317 20240317 20240317 20240317 20240317 20240317 ...
##  $ falle.FECHA_FALLECIMIENTO: int  20200711 20200505 20200803 20200622 20200626 20200829 20200531 20200605 20200707 20200519 ...
##  $ falle.EDAD_DECLARADA     : int  64 50 92 56 85 72 92 85 69 81 ...
##  $ falle.SEXO               : chr  "MASCULINO" "MASCULINO" "FEMENINO" "MASCULINO" ...
##  $ falle.CLASIFICACION_DEF  : chr  "Criterio SINADEF" "Criterio investigación Epidemiológica" "Criterio SINADEF" "Criterio investigación Epidemiológica" ...
##  $ DEPARTAMENTO             : chr  "LIMA" "LORETO" "MADRE DE DIOS" "SAN MARTIN" ...
##  $ PROVINCIA                : chr  "LIMA" "MARISCAL RAMON CASTILLA" "TAMBOPATA" "BELLAVISTA" ...
##  $ DISTRITO                 : chr  "LOS OLIVOS" "YAVARI" "INAMBARI" "BELLAVISTA" ...
##  $ UBIGEO                   : int  150117 160403 170102 220201 220901 200401 150117 220201 170101 240203 ...
##  $ UUID                     : int  846252 278625 846841 204560 297348 1016628 1060380 226494 853580 216926 ...

#Crear variable masculino y femenino

fallecidos$falle.Sexo_real <- ifelse(fallecidos$falle.SEXO == "MASCULINO", 1, -1)
fallecidos$falle.MASCULINO <- ifelse(fallecidos$falle.Sexo_real == 1, 1, NA)
fallecidos$falle.FEMENINO <- ifelse(fallecidos$falle.Sexo_real == -1, -1, NA)

#Crear variable que contabilice el total

fallecidos$falle.CANTIDAD <- ifelse(fallecidos$falle.SEXO == "MASCULINO", 1, ifelse(fallecidos$falle.SEXO == "FEMENINO", 1, NA))
str(fallecidos)
## 'data.frame':    95331 obs. of  14 variables:
##  $ falle.FECHA_CORTE        : int  20240317 20240317 20240317 20240317 20240317 20240317 20240317 20240317 20240317 20240317 ...
##  $ falle.FECHA_FALLECIMIENTO: int  20200711 20200505 20200803 20200622 20200626 20200829 20200531 20200605 20200707 20200519 ...
##  $ falle.EDAD_DECLARADA     : int  64 50 92 56 85 72 92 85 69 81 ...
##  $ falle.SEXO               : chr  "MASCULINO" "MASCULINO" "FEMENINO" "MASCULINO" ...
##  $ falle.CLASIFICACION_DEF  : chr  "Criterio SINADEF" "Criterio investigación Epidemiológica" "Criterio SINADEF" "Criterio investigación Epidemiológica" ...
##  $ DEPARTAMENTO             : chr  "LIMA" "LORETO" "MADRE DE DIOS" "SAN MARTIN" ...
##  $ PROVINCIA                : chr  "LIMA" "MARISCAL RAMON CASTILLA" "TAMBOPATA" "BELLAVISTA" ...
##  $ DISTRITO                 : chr  "LOS OLIVOS" "YAVARI" "INAMBARI" "BELLAVISTA" ...
##  $ UBIGEO                   : int  150117 160403 170102 220201 220901 200401 150117 220201 170101 240203 ...
##  $ UUID                     : int  846252 278625 846841 204560 297348 1016628 1060380 226494 853580 216926 ...
##  $ falle.Sexo_real          : num  1 1 -1 1 1 1 1 1 -1 1 ...
##  $ falle.MASCULINO          : num  1 1 NA 1 1 1 1 1 NA 1 ...
##  $ falle.FEMENINO           : num  NA NA -1 NA NA NA NA NA -1 NA ...
##  $ falle.CANTIDAD           : num  1 1 1 1 1 1 1 1 1 1 ...
fallecidos <- fallecidos %>%
  group_by(DEPARTAMENTO, PROVINCIA) %>%
  summarise(
    falle.EDAD_DECLARADA_MEDIA = mean(falle.EDAD_DECLARADA, na.rm = TRUE),
    falle.MASCULINO = sum(falle.MASCULINO, na.rm = TRUE),
    falle.FEMENINO = sum(falle.FEMENINO, na.rm = TRUE),
    falle.CANTIDAD = sum(falle.CANTIDAD, na.rm = TRUE)
  )
## `summarise()` has grouped output by 'DEPARTAMENTO'. You can override using the
## `.groups` argument.
fallecidos$falle.FEMENINO <- abs(fallecidos$falle.FEMENINO)

###MERGE AHORA SÍ

data_final <- merge(merge(merge(censo, elecciones, by = "PROVINCIA", all = FALSE), positivos, by = "PROVINCIA", all = FALSE), fallecidos, by = "PROVINCIA", all = FALSE)
## Warning in merge.data.frame(merge(merge(censo, elecciones, by = "PROVINCIA", :
## column names 'DEPARTAMENTO.x', 'DEPARTAMENTO.y' are duplicated in the result
names(data_final)
##  [1] "PROVINCIA"                                                        
##  [2] "Código"                                                           
##  [3] "GENERAL"                                                          
##  [4] "DEPARTAMENTO.x"                                                   
##  [5] "pa.Ladrillo o bloque de cemento"                                  
##  [6] "pa.Piedra o sillar con cal o cemento"                             
##  [7] "pa.Adobe"                                                         
##  [8] "pa.Tapia"                                                         
##  [9] "pa.Quincha (caña con barro)"                                      
## [10] "pa.Piedra con barro"                                              
## [11] "pa.Madera (pona, tornillo etc.)"                                  
## [12] "pa.Triplay / calamina / estera"                                   
## [13] "pa.Otro material"                                                 
## [14] "pa.Total"                                                         
## [15] "te.Concreto armado"                                               
## [16] "te.Madera"                                                        
## [17] "te.Tejas"                                                         
## [18] "te.Planchas de calamina, fibra de cemento o similares"            
## [19] "te.Caña o estera con torta de barro o cemento"                    
## [20] "te.Triplay / estera / carrizo"                                    
## [21] "te.Paja, hoja de palmera y similares"                             
## [22] "te.Otro material.1"                                               
## [23] "te.Total.1"                                                       
## [24] "pi.Parquet o madera pulida"                                       
## [25] "pi.Láminas asfálticas, vinílicos o similares"                     
## [26] "pi.Losetas, terrazos, cerámicos o similares"                      
## [27] "pi.Madera (pona, tornillo, etc.)"                                 
## [28] "pi.Cemento"                                                       
## [29] "pi.Tierra"                                                        
## [30] "pi.Otro material.2"                                               
## [31] "pi.Total.2"                                                       
## [32] "a.Red pública dentro de la vivienda"                              
## [33] "a.Red pública fuera de la vivienda, pero dentro de la edificación"
## [34] "a.Pilón o pileta de uso público"                                  
## [35] "a.Camión - cisterna u otro similar"                               
## [36] "a.Pozo (agua subterránea)"                                        
## [37] "a.Manantial o puquio"                                             
## [38] "a.Río, acequia, lago, laguna"                                     
## [39] "a.Otro"                                                           
## [40] "a.Vecino"                                                         
## [41] "a.Total.3"                                                        
## [42] "luz.Sí tiene alumbrado eléctrico"                                 
## [43] "luz.No tiene alumbrado eléctrico"                                 
## [44] "luz.Total.4"                                                      
## [45] "DEPARTAMENTO.y"                                                   
## [46] "ELEC.N_CVAS"                                                      
## [47] "ELEC.N_ELEC_HABIL"                                                
## [48] "ELEC.VOTOS_PL"                                                    
## [49] "ELEC.VOTOS_FP"                                                    
## [50] "ELEC.VOTOS_VB"                                                    
## [51] "ELEC.VOTOS_VN"                                                    
## [52] "ELEC.VOTOS_VI"                                                    
## [53] "DEPARTAMENTO.x"                                                   
## [54] "posi.EDAD_MEDIA"                                                  
## [55] "posi.MASCULINO"                                                   
## [56] "posi.FEMENINO"                                                    
## [57] "posi.CANTIDAD"                                                    
## [58] "DEPARTAMENTO.y"                                                   
## [59] "falle.EDAD_DECLARADA_MEDIA"                                       
## [60] "falle.MASCULINO"                                                  
## [61] "falle.FEMENINO"                                                   
## [62] "falle.CANTIDAD"
data_final <- data_final[, -c(2, 3, 45, 53, 58)]
str(data_final)
## 'data.frame':    195 obs. of  57 variables:
##  $ PROVINCIA                                                        : chr  "ABANCAY" "ACOBAMBA" "ACOMAYO" "AIJA" ...
##  $ DEPARTAMENTO.x                                                   : chr  "APURIMAC" "HUANCAVELICA" "CUSCO" "ANCASH" ...
##  $ pa.Ladrillo o bloque de cemento                                  : int  12592 434 100 15 9619 2576 8928 1638 1802 88 ...
##  $ pa.Piedra o sillar con cal o cemento                             : int  59 12 5 1 46 24 20 41 8 9 ...
##  $ pa.Adobe                                                         : int  19491 6872 6733 1763 441 2209 29596 4881 13436 3245 ...
##  $ pa.Tapia                                                         : int  69 3749 19 70 49 9354 653 6739 44 6 ...
##  $ pa.Quincha (caña con barro)                                      : int  26 8 0 7 181 18 40 28 25 1 ...
##  $ pa.Piedra con barro                                              : int  61 124 34 65 92 84 456 562 87 608 ...
##  $ pa.Madera (pona, tornillo etc.)                                  : int  213 5 11 2 16859 71 285 22 75 6 ...
##  $ pa.Triplay / calamina / estera                                   : int  127 20 3 18 680 15 376 62 50 7 ...
##  $ pa.Otro material                                                 : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ pa.Total                                                         : int  32638 11224 6905 1941 27967 14351 40354 13973 15527 3971 ...
##  $ te.Concreto armado                                               : int  10044 353 45 9 1380 1950 6918 1415 981 40 ...
##  $ te.Madera                                                        : int  274 10 14 57 873 40 155 27 35 4 ...
##  $ te.Tejas                                                         : int  11830 7830 6100 403 108 1051 12127 4901 10249 617 ...
##  $ te.Planchas de calamina, fibra de cemento o similares            : int  10037 2816 468 1297 19455 10716 19672 6457 3674 2655 ...
##  $ te.Caña o estera con torta de barro o cemento                    : int  86 22 5 10 56 52 141 28 16 3 ...
##  $ te.Triplay / estera / carrizo                                    : int  47 20 2 17 138 20 77 54 19 5 ...
##  $ te.Paja, hoja de palmera y similares                             : int  320 173 271 148 5957 522 1264 1091 553 646 ...
##  $ te.Otro material.1                                               : int  0 0 0 0 0 0 0 0 0 1 ...
##  $ te.Total.1                                                       : int  32638 11224 6905 1941 27967 14351 40354 13973 15527 3971 ...
##  $ pi.Parquet o madera pulida                                       : int  239 6 1 0 26 27 249 34 35 0 ...
##  $ pi.Láminas asfálticas, vinílicos o similares                     : int  243 1 0 0 66 19 94 13 14 0 ...
##  $ pi.Losetas, terrazos, cerámicos o similares                      : int  3212 70 7 4 1371 360 1339 171 219 5 ...
##  $ pi.Madera (pona, tornillo, etc.)                                 : int  902 224 86 24 3653 175 462 355 214 54 ...
##  $ pi.Cemento                                                       : int  13886 1148 699 195 9611 4216 8227 2589 2900 371 ...
##  $ pi.Tierra                                                        : int  14156 9775 6112 1718 13240 9554 29983 10811 12145 3541 ...
##  $ pi.Otro material.2                                               : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ pi.Total.2                                                       : int  32638 11224 6905 1941 27967 14351 40354 13973 15527 3971 ...
##  $ a.Red pública dentro de la vivienda                              : int  22261 6817 4808 1451 13116 6386 23858 6813 7829 1148 ...
##  $ a.Red pública fuera de la vivienda, pero dentro de la edificación: int  7189 1671 987 42 849 2775 12147 3782 5211 1797 ...
##  $ a.Pilón o pileta de uso público                                  : int  1152 734 270 10 331 1853 1435 692 606 131 ...
##  $ a.Camión - cisterna u otro similar                               : int  5 2 0 0 191 30 15 132 8 0 ...
##  $ a.Pozo (agua subterránea)                                        : int  1053 1177 359 230 7725 1607 1602 1403 1048 561 ...
##  $ a.Manantial o puquio                                             : int  348 626 157 121 148 508 582 660 425 170 ...
##  $ a.Río, acequia, lago, laguna                                     : int  509 99 266 76 5460 1084 335 424 227 120 ...
##  $ a.Otro                                                           : int  29 7 21 2 111 41 90 33 67 10 ...
##  $ a.Vecino                                                         : int  92 91 37 9 36 67 290 34 106 34 ...
##  $ a.Total.3                                                        : int  32638 11224 6905 1941 27967 14351 40354 13973 15527 3971 ...
##  $ luz.Sí tiene alumbrado eléctrico                                 : int  29588 8968 5364 1528 20021 10364 31916 9529 12663 2736 ...
##  $ luz.No tiene alumbrado eléctrico                                 : int  3050 2256 1541 413 7946 3987 8438 4444 2864 1235 ...
##  $ luz.Total.4                                                      : int  32638 11224 6905 1941 27967 14351 40354 13973 15527 3971 ...
##  $ ELEC.N_CVAS                                                      : int  62172 23033 14343 3945 57791 30293 83607 26683 37641 6038 ...
##  $ ELEC.N_ELEC_HABIL                                                : int  82538 33498 19229 5817 90033 43046 113295 37599 48975 9274 ...
##  $ ELEC.VOTOS_PL                                                    : int  43244 19060 12645 2325 37196 19053 65475 22351 31243 4797 ...
##  $ ELEC.VOTOS_FP                                                    : int  15012 2817 952 1413 16652 9102 13578 2826 4173 910 ...
##  $ ELEC.VOTOS_VB                                                    : int  498 215 168 41 505 337 848 338 376 63 ...
##  $ ELEC.VOTOS_VN                                                    : int  3418 941 578 166 3438 1801 3706 1168 1849 268 ...
##  $ ELEC.VOTOS_VI                                                    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ posi.EDAD_MEDIA                                                  : num  39.7 35.3 38.1 39.9 38.9 ...
##  $ posi.MASCULINO                                                   : num  2060 287 75 48 1356 ...
##  $ posi.FEMENINO                                                    : num  2211 373 66 31 1090 ...
##  $ posi.CANTIDAD                                                    : num  4271 660 141 79 2446 ...
##  $ falle.EDAD_DECLARADA_MEDIA                                       : num  67.2 70.7 72.5 77.5 62.8 ...
##  $ falle.MASCULINO                                                  : num  95 30 10 2 158 24 56 42 37 6 ...
##  $ falle.FEMENINO                                                   : num  65 11 12 0 98 22 43 21 27 2 ...
##  $ falle.CANTIDAD                                                   : num  160 41 22 2 256 46 99 63 64 8 ...
data_final <- data_final %>% rename("DEPARTAMENTO" = "DEPARTAMENTO.x")

###Descargamos base de datos

write.csv(data_final,"data_final.csv",row.names = F)