#
#   Lectura de datos población y paro
#
setwd("/home/etptupaf/ft/docencia/AnaMultOpt/ejemplos")
im <- read.table(file="pxMunicipal_cc.csv",fill=TRUE,na.strings=" ",sep=",")
require(zoo)
im$V1 <- na.locf(im$V1)
require(reshape2)
im <- melt(id.vars=c("V1","V2"),value.name="value",data=im)
im <- dcast(V1 ~ V2, value.name="value",data=im)
im <- im[,c(1,3,4,5)]
colnames(im) <- c("Mun","Paro.reg","Autoctonos","Pob.tot")
#
el <- read.table(file="MunG11_c.csv",fill=TRUE,na.strings=" ",sep=",",header=TRUE)
el <- el[,-(2:3)]
#
#   Convertimos Los nombres de municipio a mayúsculas para poder enlazar ambos ficheros,
#   y renombramos una columna de "el" de manera que tenga el mismo nombre que en "im"
#   (será la que se utilice como campo de enlace)
#
im$Mun <- toupper(im$Mun)
colnames(el)[2] <- "Mun"
#
#   Ahora intentamos el enlace
#
datos <- merge(im,el,all=TRUE)
dim(el)
dim(im)
dim(datos)
datos$Mun
#
#   Parece que el mayor problema estriba en que en un caso hay blancos
#   en torno a "-" y "/" y en otro no. El fichero con blancos es "el";
#   lo modificamos.
#
el$Mun <- gsub(" -" , "-", el$Mun,perl=TRUE)
el$Mun <- gsub("- " , "-", el$Mun,perl=TRUE)
el$Mun <- gsub(" /" , "/", el$Mun,perl=TRUE)
el$Mun <- gsub("/ " , "/", el$Mun,perl=TRUE)
el$Mun <- gsub("ERRIBERA GOITIA/RIBERA ALTA" , "ERRIBERAGOITIA/RIBERA ALTA", el$Mun,perl=TRUE)
el$Mun <- gsub("ARRASATE/MONDRAGON" , "ARRASATE/MONDRAGÓN", el$Mun,perl=TRUE)
el$Mun <- gsub("URDUÑA/ORDUÑA" , "URDUÑA-ORDUÑA", el$Mun,perl=TRUE)
im$Mun <- gsub(" -" , "-", im$Mun,perl=TRUE)
datos <- merge(im,el,all=TRUE)
#
#   Ahora ya está mejor
#
dim(el)
dim(im)
dim(datos)
#
#   Eliminamos a los ausentes
#
datos <- datos[ -grep("MUNICIPIO CERA",datos$Mun),]
dim(datos)
datos[1:4,]
#
require(maptools)
Bizkaia <- readShapeSpatial(fn="bizkaia_municipio",
                            proj4string=CRS("+proj=utm +zone=30 +datum=ED50"))
#
str(Bizkaia)
Bizkaia@data
#
#  Lo que sigue no es preciso en máquinas que empleen codificación LATIN1
#  (como suele ser el caso en Windows)
#
Bizkaia@data$MUNICIPIO <- iconv(Bizkaia@data$MUNICIPIO,from="latin1",to="utf8")
#
Bizkaia@data$MUNICIPIO <- toupper(Bizkaia@data$MUNICIPIO)
#
#   Vamos a tomar la parte de "datos" que corresponde a Bizkaia.
#
datos.bizkaia <- subset(datos,TH=="BIZKAIA")
#
#   Veamos si los municipios en el mapa están todos en los datos
#
tmp <- match(Bizkaia@data$MUNICIPIO, datos.bizkaia$Mun)
tmp
#
#  Cada NA es un "no match" que hay que investigar y remediar en su caso
#
Bizkaia@data$MUNICIPIO[is.na(tmp)]
#
#  Misma historia que antes
#
Bizkaia@data$MUNICIPIO <- gsub("ARCENTALES", "ARTZENTALES", Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("BÉRRIZ",  "BERRIZ",   Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("BERRIATÚA",  "BERRIATUA",   Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("CARRANZA",   "KARRANTZA HARANA/VALLE DE CARRANZA",
                                                            Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("ETXEBARRI,ANTEIGLESIA DE S.ESTEBAN", "ETXEBARRI",
                                                            Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("GARAY",       "GARAI",      Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("GÓRLIZ",      "GORLIZ",     Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("GUIZABURUAGA","GIZABURUAGA",Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("IBARRANGUELU" ,"IBARRANGELU" ,Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("MARURI/JATABE" ,"MARURI-JATABE" ,Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("MUNITIBAR-ARBATZEGI GERRIKAITZ" ,"MUNITIBAR-ARBATZEGI GERRIKAITZ-" ,
                                                            Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("ORDUÑA" ,"URDUÑA-ORDUÑA",   Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("V. DE TRÁPAGA-TRAPAGARAN","VALLE DE TRÁPAGA-TRAPAGARAN",
                                                            Bizkaia@data$MUNICIPIO ,perl=TRUE)
Bizkaia@data$MUNICIPIO <- gsub("URDÚLIZ",   "URDULIZ",      Bizkaia@data$MUNICIPIO ,perl=TRUE)
#
#   Probamos de nuevo
#
tmp <- match(Bizkaia@data$MUNICIPIO, datos.bizkaia$Mun)
tmp
#
#   Bien; ya podemos "mergear"
#
tmp <- merge(datos,Bizkaia@data,by.x="Mun",by.y="MUNICIPIO")
tmp[1:3,]
#
#   Vamos a convertir lso votos en porcentajes
#
tmp[,c("EAJ.PNV","PP","UCE","PSE.EE.PSOE","PACMA.ZAAAA","PUM.J","UPYD","EQUO","IU.LV","AMAIUR","EB")] <-
  100 * tmp[,c("EAJ.PNV","PP","UCE","PSE.EE.PSOE","PACMA.ZAAAA","PUM.J","UPYD","EQUO","IU.LV","AMAIUR","EB")] /
  tmp[,"Votos.Cand."]
tmp <- tmp[,-c(24,25)]
Bizkaia@data <- tmp
ncolors <- 9
require(RColorBrewer)
colours <- brewer.pal(ncolors, "Reds")
brks <- c(0,7,10,12,15,18,20,25,50,70)
plot(Bizkaia, col=colours[findInterval(Bizkaia$PSE.EE.PSOE,brks,all.inside=TRUE)], axes=FALSE)
plot(Bizkaia, col=colours[findInterval(Bizkaia$PP,brks,all.inside=TRUE)], axes=FALSE)
plot(Bizkaia, col=colours[findInterval(Bizkaia$EAJ.PNV,brks,all.inside=TRUE)], axes=FALSE)

data.frame(Mun=Bizkaia$Mun,PP=Bizkaia$PP,PSOE=Bizkaia$PSE.EE.PSOE,PNV=Bizkaia$EAJ.PNV)

