Skip to content

Commit 9f2dbc3

Browse files
committed
Fix to #10 + change merge function to faster *_join
1 parent 64b5d34 commit 9f2dbc3

File tree

5 files changed

+37
-20
lines changed

5 files changed

+37
-20
lines changed

DESCRIPTION

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ License: GPL-2
1010
URL: https://github.com/rOpenSpain/infoelectoral
1111
Encoding: UTF-8
1212
LazyData: true
13-
Imports: rlang (>= 0.4.0), dplyr (>= 1.0.0), stringr (>= 1.0.0)
13+
Imports: rlang (>= 0.4.0), dplyr (>= 1.0.0), stringr (>= 1.0.0)
1414
Suggests: mapSpain, tmap, tidyr, preferably, knitr
15-
RoxygenNote: 7.1.2
15+
RoxygenNote: 7.2.3
1616
VignetteBuilder: knitr

NAMESPACE

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export(provincias)
77
importFrom(dplyr,"%>%")
88
importFrom(dplyr,arrange)
99
importFrom(dplyr,bind_rows)
10+
importFrom(dplyr,full_join)
11+
importFrom(dplyr,left_join)
1012
importFrom(dplyr,mutate)
1113
importFrom(dplyr,mutate_if)
1214
importFrom(dplyr,relocate)

R/mesas.R

+15-7
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@
1111
#' @importFrom stringr str_trim
1212
#' @importFrom stringr str_remove_all
1313
#' @importFrom dplyr relocate
14+
#' @importFrom dplyr full_join
15+
#' @importFrom dplyr left_join
1416
#' @importFrom dplyr %>%
1517
#' @importFrom rlang .data
1618
#'
1719
#' @export
1820
mesas <- function(tipo_eleccion, anno, mes) {
19-
2021
### Construyo la url al zip de la elecciones
2122
if (tipo_eleccion == "municipales") {
2223
tipo <- "04"
@@ -56,8 +57,8 @@ mesas <- function(tipo_eleccion, anno, mes) {
5657

5758

5859
### Junto los datos de los tres ficheros
59-
df <- merge(dfbasicos, dfmesas, by = c("tipo_eleccion", "anno", "mes", "vuelta", "codigo_ccaa", "codigo_provincia", "codigo_municipio", "codigo_distrito", "codigo_seccion", "codigo_mesa"), all = T)
60-
df <- merge(df, dfcandidaturas, by = c("tipo_eleccion", "anno", "mes", "codigo_partido"), all.x = T)
60+
df <- full_join(dfbasicos, dfmesas, by = c("tipo_eleccion", "anno", "mes", "vuelta", "codigo_ccaa", "codigo_provincia", "codigo_municipio", "codigo_distrito", "codigo_seccion", "codigo_mesa"))
61+
df <- left_join(df, dfcandidaturas, by = c("tipo_eleccion", "anno", "mes", "codigo_partido"))
6162

6263
### Limpieza: Quito los espacios en blanco a los lados de estas variables
6364
df$codigo_seccion <- str_trim(df$codigo_seccion)
@@ -66,9 +67,8 @@ mesas <- function(tipo_eleccion, anno, mes) {
6667
df$denominacion <- str_remove_all(df$denominacion, '"')
6768

6869
# Inserto el nombre del municipio más reciente y reordeno algunas variables
69-
codigos_municipios <- NULL
70-
data("codigos_municipios", envir = environment())
71-
df <- merge(df, codigos_municipios, by = c("codigo_provincia", "codigo_municipio"), all.x = T) %>%
70+
codigos_municipios <- infoelectoral::codigos_municipios
71+
df <- left_join(df, codigos_municipios, by = c("codigo_provincia", "codigo_municipio")) %>%
7272
relocate(
7373
.data$codigo_ccaa,
7474
.data$codigo_provincia,
@@ -87,9 +87,17 @@ mesas <- function(tipo_eleccion, anno, mes) {
8787
.data$votos,
8888
.data$datos_oficiales ,
8989
.after = .data$codigo_partido_nacional
90+
) %>%
91+
arrange(
92+
.data$codigo_ccaa,
93+
.data$codigo_provincia,
94+
.data$codigo_municipio,
95+
.data$codigo_distrito,
96+
.data$codigo_seccion,
97+
.data$codigo_mesa,
98+
-.data$votos
9099
)
91100

92101
df$municipio[df$codigo_municipio == "999"] <- "CERA"
93-
94102
return(df)
95103
}

R/muni.R

+11-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#' @importFrom dplyr relocate
1515
#' @importFrom dplyr %>%
1616
#' @importFrom dplyr bind_rows
17+
#' @importFrom dplyr full_join
18+
#' @importFrom dplyr left_join
1719
#' @importFrom rlang .data
1820
#' @importFrom utils data
1921
#' @export
@@ -75,18 +77,22 @@ municipios <- function(tipo_eleccion, anno, mes, distritos = FALSE) {
7577
try(file.remove(borrar), silent = T)
7678

7779
### Junto los datos de los tres ficheros
78-
df <- merge(dfbasicos, dfmunicipios, by = c("tipo_eleccion", "vuelta", "anno", "mes", "codigo_provincia", "codigo_municipio", "codigo_distrito"), all = T)
79-
df <- merge(df, dfcandidaturas, by = c("tipo_eleccion", "anno", "mes", "codigo_partido"), all.x = T)
80+
df <- full_join(dfbasicos, dfmunicipios,
81+
by = c("tipo_eleccion", "vuelta", "anno", "mes",
82+
"codigo_provincia", "codigo_municipio",
83+
"codigo_distrito"))
84+
df <- left_join(df, dfcandidaturas,
85+
by = c("tipo_eleccion", "anno", "mes", "codigo_partido"))
8086

8187
### Limpieza: Quito los espacios en blanco a los lados de estas variables
8288
df$siglas <- str_trim(df$siglas)
8389
df$denominacion <- str_trim(df$denominacion)
8490
df$denominacion <- str_remove_all(df$denominacion, '"')
8591

8692
# Inserto el nombre del municipio más reciente y reordeno algunas variables
87-
codigos_municipios <- NULL
88-
data("codigos_municipios", envir = environment())
89-
df <- merge(df, codigos_municipios, by = c("codigo_provincia", "codigo_municipio"), all.x = T) %>%
93+
codigos_municipios <- infoelectoral::codigos_municipios
94+
df <- left_join(df, codigos_municipios,
95+
by = c("codigo_provincia", "codigo_municipio")) %>%
9096
relocate(
9197
.data$codigo_ccaa,
9298
.data$codigo_provincia,

R/provincias.R

+7-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#' @importFrom stringr str_trim
1212
#' @importFrom stringr str_remove_all
1313
#' @importFrom dplyr relocate
14+
#' @importFrom dplyr full_join
15+
#' @importFrom dplyr left_join
1416
#' @importFrom dplyr %>%
1517
#' @importFrom rlang .data
1618
#'
@@ -29,7 +31,6 @@ provincias <- function(tipo_eleccion, anno, mes) {
2931
stop('The argument tipo_eleccion must take one of the following values: "congreso", "municipales", "europeas"')
3032
}
3133

32-
3334
urlbase <- "https://infoelectoral.interior.gob.es/estaticos/docxl/apliextr/"
3435
url <- paste0(urlbase, tipo, anno, mes, "_TOTA", ".zip")
3536

@@ -40,9 +41,6 @@ provincias <- function(tipo_eleccion, anno, mes) {
4041
unzip(temp, overwrite = T, exdir = tempd)
4142

4243

43-
44-
45-
4644
### Construyo las rutas a los ficheros DAT necesarios
4745
codigo_eleccion <- paste0(substr(anno, nchar(anno)-1, nchar(anno)), mes)
4846
todos <- list.files(tempd, recursive = T)
@@ -62,8 +60,11 @@ provincias <- function(tipo_eleccion, anno, mes) {
6260
try(file.remove(borrar), silent = T)
6361

6462
### Junto los datos de los tres ficheros
65-
df <- merge(dfcandidaturas_basicos, dfcandidaturas, by = c("tipo_eleccion", "anno", "mes", "codigo_partido"), all = T)
66-
df <- merge(dfbasicos, df, c("tipo_eleccion", "anno", "mes", "vuelta", "codigo_ccaa", "codigo_provincia", "codigo_distrito_electoral"), all.x = T)
63+
df <- full_join(dfcandidaturas_basicos, dfcandidaturas,
64+
by = c("tipo_eleccion", "anno", "mes", "codigo_partido"))
65+
df <- left_join(dfbasicos, df,
66+
by = c("tipo_eleccion", "anno", "mes", "vuelta", "codigo_ccaa",
67+
"codigo_provincia", "codigo_distrito_electoral"))
6768

6869

6970

0 commit comments

Comments
 (0)