Abstract
Exponemos la automatización de la extracción y manipulación de datos electorales chilenos. El objetivo es comprender un poco más la sintaxis de R y tener una plantilla, que sirva de base para futuros tratamientos de datos análogos.
mifuncion <- function(n){
if(n <= 9){
data_excel <- paste("DATA-ELECCIONES-master/Datos elecciones chile tribunalcalificador CL/Diputados/2001/DIPUTADOS-0", n ,"-2001.xls",sep="")
diputados <- read_xls(data_excel , sheet = 2)
diputadosrds <- paste("diputados_0", n, "_2001.rds", sep="")
saveRDS(diputados, diputadosrds)
diputados_nombres <- read_xls(data_excel , sheet = 1)
diputadosrds <- paste("diputados_nombres_0", n, "_2001.rds", sep="")
saveRDS(diputados_nombres, diputadosrds)
# print(diputados)
}
else{
data_excel <- paste("DATA-ELECCIONES-master/Datos elecciones chile tribunalcalificador CL/Diputados/2001/DIPUTADOS-", n ,"-2001.xls",sep="")
diputados <- read_xls(data_excel , sheet = 2)
diputadosrds <- paste("diputados_", n, "_2001.rds", sep="")
saveRDS(diputados, diputadosrds)
diputados_nombres <- read_xls(data_excel , sheet = 1)
diputadosrds <- paste("diputados_nombres_", n, "_2001.rds", sep="")
saveRDS(diputados_nombres, diputadosrds)
# print(diputados)
}
}
for (n in 1:11){
mifuncion(n)
}
funcion2 <- function(n){
if(n <= 9){
data_rds <- paste("diputados_0", n, "_2001.rds", sep="")
diputados2001_01 <- readRDS(data_rds)
diputados_f <- diputados2001_01[,c("NRO_CIR","NRO_DIS","TIPO_MESA" ,"NOM_CIR", "NRO_MESA" )]
numero_col <- ncol(diputados2001_01)
numero <- match("NRO_MESA", names(diputados2001_01))
numero_magico <- (numero)
cantidad_de_repeticiones <- (numero_col - numero_magico)
diputados_filas_repetidas <- diputados_f[rep(seq_len(nrow(diputados_f )), each = cantidad_de_repeticiones), ]
diputadosrds <- paste("diputados_repetidos_0", n, "_2001.rds", sep="")
saveRDS(diputados_filas_repetidas, diputadosrds)
# print(cantidad_de_repeticiones)
# print(diputados_filas_repetidas)
}
else{
data_rds <- paste("diputados_", n, "_2001.rds", sep="")
diputados2001_01 <- readRDS(data_rds)
diputados_f <- diputados2001_01[,c("NRO_CIR","NRO_DIS","TIPO_MESA" ,"NOM_CIR", "NRO_MESA" )]
numero_col <- ncol(diputados2001_01)
numero <- match("NRO_MESA", names(diputados2001_01))
numero_magico <- (numero)
cantidad_de_repeticiones <- (numero_col - numero_magico)
diputados_filas_repetidas <- diputados_f[rep(seq_len(nrow(diputados_f )), each = cantidad_de_repeticiones), ]
diputadosrds <- paste("diputados_repetidos_", n, "_2001.rds", sep="")
saveRDS(diputados_filas_repetidas, diputadosrds)
# print(cantidad_de_repeticiones)
# print(diputados_filas_repetidas)
}
}
for (n in 1:11){
funcion2(n)
}
funcion3 <- function(n){
if(n <= 9){
data_rds <- paste("diputados_0", n, "_2001.rds", sep="")
diputados2001_01 <- readRDS(data_rds)
numero_col <- ncol(diputados2001_01)
numero_magico <- match("NRO_MESA",names(diputados2001_01))
numero_magico <- ( numero_magico + 1)
# selecionamos los resultados electorales por lista:
diputados2001_01_votos <- diputados2001_01[c(numero_magico:numero_col)]
resultados_traspuestos <- as.data.frame(t(diputados2001_01_votos))
diputados2001_v <- stack(resultados_traspuestos)
# Construímos la columnas de las listas
numero_col <- ncol(diputados2001_01)
numero_magico <- match("NRO_MESA",names(diputados2001_01))
numero_magico <- numero_magico + 1
numero_magico_del_terror <- numero_col - numero_magico + 1
# extraemos los nombres de las listas:
diputados2001_01_votos_2 <- diputados2001_01[c(numero_magico:numero_col)]
fr <- names(diputados2001_01_votos_2)
### necesitamos la bdedatos de los votos stackeados para obtener nrow de los resultados electorales traspuestos y apilados:
diputados2001_exp <- diputados2001_01[c(numero_magico:numero_col)]
resultados_traspuestos <- as.data.frame(t(diputados2001_exp))
diputados2001_exp_2 <- stack(resultados_traspuestos)
nrow(diputados2001_exp_2)
timess = nrow(diputados2001_exp_2)/ numero_magico_del_terror
###
f <- rep(fr, times=timess)
f <- as.data.frame(f)
al_fin <- cbind(diputados2001_v,f)
# print(al_fin)
diputadosrds_votos <- paste("diputados_j_0", n, "_votos_2001.rds", sep="")
saveRDS(al_fin, diputadosrds_votos)
}
else{
data_rds <- paste("diputados_", n, "_2001.rds", sep="")
diputados2001_01 <- readRDS(data_rds)
numero_col <- ncol(diputados2001_01)
numero_magico <- match("NRO_MESA",names(diputados2001_01))
numero_magico <- ( numero_magico + 1)
# selecionamos los resultados electorales por lista:
diputados2001_01_votos <- diputados2001_01[c(numero_magico:numero_col)]
resultados_traspuestos <- as.data.frame(t(diputados2001_01_votos))
diputados2001_v <- stack(resultados_traspuestos)
# Construímos la columnas de las listas
numero_col <- ncol(diputados2001_01)
numero_magico <- match("NRO_MESA",names(diputados2001_01))
numero_magico <- numero_magico + 1
numero_magico_del_terror <- numero_col - numero_magico + 1
# extraemos los nombres de las listas:
diputados2001_01_votos_2 <- diputados2001_01[c(numero_magico:numero_col)]
fr <- names(diputados2001_01_votos_2)
### necesitamos la bdedatos de los votos stackeados para obtener nrow de los resultados electorales traspuestos y apilados:
diputados2001_exp <- diputados2001_01[c(numero_magico:numero_col)]
resultados_traspuestos <- as.data.frame(t(diputados2001_exp))
diputados2001_exp_2 <- stack(resultados_traspuestos)
nrow(diputados2001_exp_2)
timess = nrow(diputados2001_exp_2)/ numero_magico_del_terror
f <- rep(fr, times=timess)
f <- as.data.frame(f)
al_fin <- cbind(diputados2001_v,f)
# print(al_fin)
diputadosrds_votos <- paste("diputados_j_", n, "_votos_2001.rds", sep="")
saveRDS(al_fin, diputadosrds_votos)
}
}
for (n in 1:11){
funcion3(n)
}
funcion4 <- function(n){
if(n <= 9){
rds_identificacion <- paste("diputados_repetidos_0", n, "_2001.rds", sep="")
rds_resultados <- paste("diputados_j_0", n, "_votos_2001.rds", sep="")
rds_identificacion <- readRDS(rds_identificacion)
rds_resultados <- readRDS(rds_resultados)
union_final <- cbind(rds_identificacion, rds_resultados)
union_final <- union_final[,-7]
names(union_final)[1] <- "Circunscripcion"
names(union_final)[2] <- "Distrito"
names(union_final)[3] <- "Tipo de mesa"
names(union_final)[4] <- "Nombre de la circunscripcion"
names(union_final)[5] <- "Numero de mesa"
names(union_final)[6] <- "votos"
names(union_final)[7] <- "CODIGO"
diputadosrds_votos <- paste("diputados_casifinal_0", n, "_votos_2001.rds", sep="")
saveRDS(union_final, diputadosrds_votos)
# print(union_final)
}
else{
rds_identificacion <- paste("diputados_repetidos_", n, "_2001.rds", sep="")
rds_resultados <- paste("diputados_j_", n, "_votos_2001.rds", sep="")
rds_identificacion <- readRDS(rds_identificacion)
rds_resultados <- readRDS(rds_resultados)
union_final <- cbind(rds_identificacion, rds_resultados)
union_final <- union_final[,-7]
names(union_final)[1] <- "Circunscripcion"
names(union_final)[2] <- "Distrito"
names(union_final)[3] <- "Tipo de mesa"
names(union_final)[4] <- "Nombre de la circunscripcion"
names(union_final)[5] <- "Numero de mesa"
names(union_final)[6] <- "votos"
names(union_final)[7] <- "CODIGO"
diputadosrds_votos <- paste("diputados_casifinal_", n, "_votos_2001.rds", sep="")
saveRDS(union_final, diputadosrds_votos)
# print(union_final)
}
}
for (n in 1:11){
funcion4(n)
}
funcion5 <- function(n){
if(n <= 9){
diputados_nombres_0 <- paste("diputados_nombres_0", n, "_2001.rds", sep="")
diputados2001_01 <- readRDS(diputados_nombres_0)
diputados2001_01 <- diputados2001_01[,4:5]
diputados_casifinal <- paste("diputados_casifinal_0", n, "_votos_2001.rds", sep="")
diputados_casifinal <- readRDS(diputados_casifinal)
df = merge( x = diputados_casifinal, y = diputados2001_01, by = "CODIGO", all.x = TRUE)
diputadosrds_votos_fff <- paste("diputados_casifinal_finalisimo_", n, "_votos_2001.rds", sep="")
saveRDS(df, diputadosrds_votos_fff)
# print(df)
}
else{
diputados_nombres_0 <- paste("diputados_nombres_", n, "_2001.rds", sep="")
diputados2001_01 <- readRDS(diputados_nombres_0)
diputados2001_01 <- diputados2001_01[,4:5]
diputados_casifinal <- paste("diputados_casifinal_", n, "_votos_2001.rds", sep="")
diputados_casifinal <- readRDS(diputados_casifinal)
df = merge( x = diputados_casifinal, y = diputados2001_01, by = "CODIGO", all.x = TRUE)
diputadosrds_votos_fff <- paste("diputados_casifinal_finalisimo_", n, "_votos_2001.rds", sep="")
saveRDS(df, diputadosrds_votos_fff)
print(head(df,5))
}
}
for (n in 1:11){
funcion5(n)
}
## CODIGO Circunscripcion Distrito Tipo de mesa Nombre de la circunscripcion
## 1 A1 5 10 0 LA LIGUA
## 2 A1 5 10 1 LA CRUZ
## 3 A1 5 10 1 QUINTERO
## 4 A1 5 10 1 NOGALES
## 5 A1 5 10 0 NOGALES
## Numero de mesa votos NOMBRE
## 1 1 12 ZAIDA CANCINO SEPULVEDA
## 2 5 5 ZAIDA CANCINO SEPULVEDA
## 3 22 16 ZAIDA CANCINO SEPULVEDA
## 4 4 2 ZAIDA CANCINO SEPULVEDA
## 5 3 11 ZAIDA CANCINO SEPULVEDA
## CODIGO Circunscripcion Distrito Tipo de mesa Nombre de la circunscripcion
## 1 A1 5 11 0 LOS ANDES
## 2 A1 5 11 1 SAN FELIPE
## 3 A1 5 11 0 SANTA MARIA
## 4 A1 5 11 1 RINCONADA
## 5 A1 5 11 0 LLAY-LLAY
## Numero de mesa votos NOMBRE
## 1 1 2 ALEJANDRO AGUILAR GAJARDO
## 2 53 6 ALEJANDRO AGUILAR GAJARDO
## 3 3 12 ALEJANDRO AGUILAR GAJARDO
## 4 1 8 ALEJANDRO AGUILAR GAJARDO
## 5 21 10 ALEJANDRO AGUILAR GAJARDO
diputados2001_01 <- readRDS("diputados_01_2001.rds")
numero_col <- ncol(diputados2001_01)
numero_magico <- match("NRO_MESA",names(diputados2001_01))
numero_magico <- ( numero_magico + 1)
# selecionamos los resultados electorales por lista:
diputados2001_01_votos <- diputados2001_01[c(numero_magico:numero_col)]
resultados_traspuestos <- as.data.frame(t(diputados2001_01_votos))
diputados2001_v <- stack(resultados_traspuestos)
# Construímos la columnas de las listas
numero_col <- ncol(diputados2001_01)
numero_magico <- match("NRO_MESA",names(diputados2001_01))
numero_magico <- numero_magico + 1
numero_magico_del_terror <- numero_col - numero_magico + 1
# extraemos los nombres de las listas:
diputados2001_01_votos_2 <- diputados2001_01[c(numero_magico:numero_col)]
fr <- names(diputados2001_01_votos_2)
### necesitamos la bdedatos de los votos stackeados para obtener nrow de los resultados electorales traspuestos y apilados:
diputados2001_exp <- diputados2001_01[c(numero_magico:numero_col)]
resultados_traspuestos <- as.data.frame(t(diputados2001_exp))
diputados2001_exp_2 <- stack(resultados_traspuestos)
nrow(diputados2001_exp_2)
## [1] 7120
timess = nrow(diputados2001_exp_2)/numero_magico_del_terror
f <- rep(fr, times=timess)
f <- as.data.frame(f)
lo_logramos <- cbind(diputados2001_v,f)
# print(lo_logramos)