Abstract
Existen dos repositorios públicos oficiales que mantienen la información electoral de Chile, pero discontinuas tanto en forma como en fondo, tanto entre como dentro de ellas. A nivel de mesa, el Servel sólo tiene datos desde el año 2012 en un formato llamésmolo A. El Tricel los tiene desde 1989, pero en un formato B. Por ejemplo, los datos del Tricel desde 1989 se dividen para los diputados de 1989 en 60 tablas excel las cuales no mantienen la misma cantidad de columnas ni la misma información. La tarea consistió en llevar el formato del Tricel al del Servel y estandarizar la data en columnas con la información de la circunscripción, el distrito, la lista, el nombre del candidato, sus votos, el número de mesa y el tipo de mesa. Los territorios electorales no coinciden con los comunales, asi que no se consideraron las comunas. Sin embargo se pueden identificar fácilmente por los números de circunscripción y distrito. Esta geografía electoral cambió con el fin del binominal. El trabajo se dividió en dos partes, manipular los datos para llevarlos al formato del Servel y estandarizar en un formato con las columnas que ya definimos para finalmente unirlas.
http://www.tce.cl/resultados-electorales/
Tenemos el excel del Tricel que contiene filas que queremos transformar en columnas: la de las listas, para poder filtrarlas.
Tenemos en otra hoja el diccionario lista-candidato
Queremos asociar las listas con los nombres.
el formato al que queremos llegar es:
n<-"diputados_01_1989.xlsx"
diputados <- read_xlsx(n, sheet = 2)
saveRDS(diputados, "diputados_01_1989.rds")
dataset_diputados <- readRDS("diputados_01_1989.rds")
dataset_diputados <- as.data.frame(dataset_diputados)
colnames(dataset_diputados)
## [1] "DISTRITO" "REGIONP" "JUNTAP" "PROVINCIAP" "COMUNAP"
## [6] "NOM_COMUNA" "CIRP" "NOM_CIR" "TIPOMESAP" "NRO_MESA"
## [11] "A1" "A2" "B1" "B2" "E1"
## [16] "E2" "G1" "G2" "I1" "V_NULOS"
## [21] "V_BLANCOS" "TOTAL" "COLEGIO"
numcol<-ncol(dataset_diputados)
numcol
## [1] 23
numrow<-nrow(dataset_diputados)
# head(dataset_diputados,1)
nrow(dataset_diputados)
## [1] 315
limite_primer_dataset<- 10
inicio_segundo_dataset<- limite_primer_dataset+1
repetir_mesas <- numcol - limite_primer_dataset
repetir_mesas
## [1] 13
mesas <- dataset_diputados[,1:limite_primer_dataset]
data_diputados_sub_mesas<-mesas[rep(seq_len(nrow(mesas)), each = repetir_mesas), ]
head(data_diputados_sub_mesas,1)
## DISTRITO REGIONP JUNTAP PROVINCIAP COMUNAP NOM_COMUNA CIRP NOM_CIR TIPOMESAP
## 1 1 NA 1 1 1 ARICA 1 ARICA 0
## NRO_MESA
## 1 1
nrow(data_diputados_sub_mesas)
## [1] 4095
resultados <- dataset_diputados[,inicio_segundo_dataset:numcol]
resultados_traspuestos <- as.data.frame(t(resultados))
# ncol(resultados_traspuestos)
# nrow(resultados_traspuestos)
resultados_stack<-stack(resultados_traspuestos)
# nrow(resultados_stack)
# ncol(resultados_stack)
head(resultados_stack,1)
## values ind
## 1 67 V1
resultados <- dataset_diputados[,inicio_segundo_dataset:numcol]
nombre <- colnames(resultados)
# nombre
l<-rep(nombre, times=nrow(dataset_diputados))
ll<-as.data.frame(l)
nrow(ll)
## [1] 4095
diputados_1989_unidos <- cbind(data_diputados_sub_mesas, resultados_stack, ll)
head(diputados_1989_unidos,1)
## DISTRITO REGIONP JUNTAP PROVINCIAP COMUNAP NOM_COMUNA CIRP NOM_CIR TIPOMESAP
## 1 1 NA 1 1 1 ARICA 1 ARICA 0
## NRO_MESA values ind l
## 1 1 67 V1 A1
ncol(diputados_1989_unidos)
## [1] 13
numerocol<-ncol(diputados_1989_unidos)
names(diputados_1989_unidos)[numerocol] <- "CODIGO"
head(diputados_1989_unidos,1)
## DISTRITO REGIONP JUNTAP PROVINCIAP COMUNAP NOM_COMUNA CIRP NOM_CIR TIPOMESAP
## 1 1 NA 1 1 1 ARICA 1 ARICA 0
## NRO_MESA values ind CODIGO
## 1 1 67 V1 A1
nrow(diputados_1989_unidos)
## [1] 4095
diputados <- read_xlsx(n)
saveRDS(diputados, "senadores_19_1989_n.rds")
dataset_nombres_diputados <- readRDS("senadores_19_1989_n.rds")
dataset_nombres_diputados <- as.data.frame(dataset_nombres_diputados)
head(dataset_nombres_diputados,15)
## DISTRITO LISTA CODIGO NUMERO NOMBRE VOTACION
## 1 1 A A1 9 LUIS LE BLANC VALENZUELA 21314
## 2 1 A A2 10 LUIS GUTIERREZ TORRES 15564
## 3 1 B B1 11 PATRICIO DURAN GATICA 5098
## 4 1 B B2 12 CARLOS VALCARCE MEDINA 21497
## 5 1 E E1 13 VICENTE JESUS ECHEVERRIA GUZMAN 2584
## 6 1 E E2 14 PABLO PIZARRO BOSSAY 4974
## 7 1 G G1 15 JUAN RESTELLI PORTUGUEZ 5070
## 8 1 G G2 16 OREL VICIANI ESCKER 7089
## 9 1 I I1 17 PATRICIO ARANCIBIA BEAUMONT 1784
## 10 1 <NA> V_N 99 VOTOS NULOS 2917
## 11 1 <NA> V_B 99 VOTOS BLANCOS 2486
## 12 1 <NA> T_M 99 TOTAL DISTRITO 90377
## 13 NA <NA> <NA> <NA> <NA> <NA>
## 14 NA <NA> <NA> <NA> <NA> <NA>
## 15 NA <NA> <NA> <NA> <NA> <NA>
## ELECTO
## 1 DIPUTADO
## 2 <NA>
## 3 <NA>
## 4 DIPUTADO
## 5 <NA>
## 6 <NA>
## 7 <NA>
## 8 <NA>
## 9 <NA>
## 10 <NA>
## 11 <NA>
## 12 <NA>
## 13 <NA>
## 14 <NA>
## 15 <NA>
# dataset_nombres_diputados <- dataset_nombres_diputados[!is.na(dataset_nombres_diputados$LISTA),]
# head(dataset_nombres_diputados,15)
# dataset_nombres_diputados <- dataset_nombres_diputados[!is.na(dataset_nombres_diputados$TOTAL),]
# names(dataset_nombres_diputados)[6] <- "NOMBRE"
numero_codigo<-nrow(dataset_nombres_diputados)-1
dataset_nombres_diputados_sub<-dataset_nombres_diputados[ c(3,5)]
dataset_nombres_diputados_final<-dataset_nombres_diputados_sub[1:9, ]
dataset_nombres_diputados_sub
## CODIGO NOMBRE
## 1 A1 LUIS LE BLANC VALENZUELA
## 2 A2 LUIS GUTIERREZ TORRES
## 3 B1 PATRICIO DURAN GATICA
## 4 B2 CARLOS VALCARCE MEDINA
## 5 E1 VICENTE JESUS ECHEVERRIA GUZMAN
## 6 E2 PABLO PIZARRO BOSSAY
## 7 G1 JUAN RESTELLI PORTUGUEZ
## 8 G2 OREL VICIANI ESCKER
## 9 I1 PATRICIO ARANCIBIA BEAUMONT
## 10 V_N VOTOS NULOS
## 11 V_B VOTOS BLANCOS
## 12 T_M TOTAL DISTRITO
## 13 <NA> <NA>
## 14 <NA> <NA>
## 15 <NA> <NA>
## 16 <NA> <NA>
## 17 <NA> <NA>
## 18 <NA> <NA>
## 19 <NA> REGIONP
## 20 <NA> NRO_CIR
## 21 <NA> NRO_DIS
## 22 <NA> JUNTAP
## 23 <NA> PROVINCIAP
## 24 <NA> COMUNAP
## 25 <NA> NOM_COMUNA
## 26 <NA> TIPOMESAP
## 27 <NA> CIRP
## 28 <NA> NOM_CIR
## 29 <NA> T_M
dataset_nombres_diputados_final
## CODIGO NOMBRE
## 1 A1 LUIS LE BLANC VALENZUELA
## 2 A2 LUIS GUTIERREZ TORRES
## 3 B1 PATRICIO DURAN GATICA
## 4 B2 CARLOS VALCARCE MEDINA
## 5 E1 VICENTE JESUS ECHEVERRIA GUZMAN
## 6 E2 PABLO PIZARRO BOSSAY
## 7 G1 JUAN RESTELLI PORTUGUEZ
## 8 G2 OREL VICIANI ESCKER
## 9 I1 PATRICIO ARANCIBIA BEAUMONT
df = merge( x = diputados_1989_unidos, y = dataset_nombres_diputados_final, by = "CODIGO", all.x = TRUE)
nrow(df)
## [1] 4095
head(df,10)
## CODIGO DISTRITO REGIONP JUNTAP PROVINCIAP COMUNAP NOM_COMUNA CIRP NOM_CIR
## 1 A1 1 NA 1 1 1 ARICA 1 ARICA
## 2 A1 1 NA 1 1 1 ARICA 1 ARICA
## 3 A1 1 NA 1 1 1 ARICA 1 ARICA
## 4 A1 1 NA 1 1 1 ARICA 1 ARICA
## 5 A1 1 NA 1 1 1 ARICA 1 ARICA
## 6 A1 1 NA 1 1 1 ARICA 1 ARICA
## 7 A1 1 NA 1 1 1 ARICA 1 ARICA
## 8 A1 1 NA 1 1 1 ARICA 2 ARICA
## 9 A1 1 NA 1 1 1 ARICA 1 ARICA
## 10 A1 1 NA 1 1 1 ARICA 1 ARICA
## TIPOMESAP NRO_MESA values ind NOMBRE
## 1 0 58 87 V58 LUIS LE BLANC VALENZUELA
## 2 0 29 68 V29 LUIS LE BLANC VALENZUELA
## 3 0 30 68 V30 LUIS LE BLANC VALENZUELA
## 4 0 61 92 V61 LUIS LE BLANC VALENZUELA
## 5 0 62 63 V62 LUIS LE BLANC VALENZUELA
## 6 0 59 72 V59 LUIS LE BLANC VALENZUELA
## 7 0 60 79 V60 LUIS LE BLANC VALENZUELA
## 8 1 28 55 V181 LUIS LE BLANC VALENZUELA
## 9 0 57 90 V57 LUIS LE BLANC VALENZUELA
## 10 0 31 72 V31 LUIS LE BLANC VALENZUELA
saveRDS(df, "senadores_19_1989_corregido.rds")