Importar dades electorals de Catalunya

Amb aquest post pre-vacances tinc la intenció d’importar les dades electorals de Catalunya. Tot passant pel projecte Dades Obertes gencat on es poden trobar moltes dades útils de la generalitat de Catalunya i comentant els passos  necessaris per poder treballar còmodament amb elles a l’R.

Dades Obertes gencat

Per explicar en que consisteix què millor que la seva pròpia definició que tenen a la seva web, que és la següent:

En què consisteix

Dades obertes gencat és el portal de la Generalitat de Catalunya, gestionat des de la Direcció General d’Atenció Ciutadana i Difusió, on estan publicades les dades de caràcter públic, amb l’objectiu de fomentar l’ús i la reutilització de la informació procedent de l’administració.

Les dades procedeixen de diferents organismes públics de la Generalitat i estan agrupades en el catàleg de dades. Les dades estan disponibles en diferents formats, la majoria dels quals són estàndard, de manera que es poden reutilitzar fàcilment.

El Govern de la Generalitat de Catalunya, seguint les tendències internacionals d’obertura de dades públiques i amb l’assessorament d’experts del W3C (World Wide Web Consortium) es compromet a l’obertura progressiva de les dades públiques de què disposi, amb les limitacions de privacitat, seguretat i propietat que apliquin en cada cas, segons l’acord de Govern de novembre de 2010. Consulteu l’apartat Què és l’Open data per saber més sobre la iniciativa a nivell global […]

Al portal de Dades Obertes hi podeu trobar un munt de dades interessants i esperem que ho vagin ampliant de forma decidida. Entre elles i fa poc les dades electorals de Catalunya. Des dels resultats a les eleccions del Senat a Catalunya l’any 1993, passant per les eleccions municipals del 2003, com les eleccions al Parlament de Catalunya del 2010. Sense comprovar-ho exhaustivament crec que hi deu ser tot.

Importar les dades a l’R

Com que aquest és el bloc del grup d’usuaris d’R de Barcelona, doncs sempre s’agraeix explicar algunes coses d’aquest llenguatge que tant servei ens fa al dia dia. Per tant, penso importar les dades dels vots de les eleccions al Parlament de Catalunya de l’any 2010. Afegeixo la descripció que en donen a la web de les dades a importar:

Descripció

Resultats de les eleccions al Parlament de Catalunya del dia 28 de novembre de 2010. Es presenten en 3 fitxers: participació; vots i electes. Els fitxers de participació i de vots inclouen els nivells territorials de municipi (MU), comarca (CO), província (PR), Catalunya (CA) i els districtes del municipi de Barcelona (DM). El fitxer d’electes presenta les dades a nivell de circumscripció.

Aquestes dades estan en csv, normalment, acostumo a baixar el fitxer i després importar-ho utilitzant les instruccions read.table o read. csv. Però avui i per variar us mostro una forma que potser no hagueu fet servir mai, directament enllaçar amb el link on està el fitxer.

eleccions2010 = read.table("http://dadesobertes.gencat.cat/recursos/eleccions/pc/OPENDATA_A2010_vots.csv",
header = TRUE, sep = ";", dec = ",", quote = "",
strip.white = TRUE, encoding ="latin1")

Per no tenir problemes amb la importació, cal definir adequadament els paràmetres següents:

  • header: Indica si la primera fila conté els noms de la base de dades.
  • sep: Indica com estan separats els diferents camps, en el nostre cas amb un punt i coma.
  • dec: Indica com estan separats els decimals, en el nostre cas una coma.
  • quote: Indica quins caràcters s’entendran com a cometes, en el nostre cas s’ha de deixar en blanc (”). Molt important ja que les dades contenen apòstrofs i per tant, es llegirien com a caràcters totes les línies entre dos apòstrofs i no estaríem important correctament les dades.
  • strip.white: Si has definit un sep, elimina els espais en blanc de més que hi puguin haver a les diferents variables. No és crític però els camps de text queden millor.
  • encoding: En el cas de Mac evites problemes amb accents, en Windows no caldria.
# Comprovem l'estructura de les dades
str(eleccions2010)

 # 'data.frame': 28743 obs. of 17 variables:
 # $ ELECCIO : Factor w/ 1 level "A": 1 1 1 1 1 1 1 1 1 1 ...
 # $ ANY : int 2010 2010 2010 2010 2010 2010 2010 2010..
 # $ NIVELL : Factor w/ 5 levels "CA","CO","DM",..: 1 1 ...
 # $ AUTONOMIA : Factor w/ 1 level "Catalunya": 11 1 1 1 ...
 # $ CODI.PROVÍNCIA : int NA NA NA NA NA NA NA NA NA ...
 # $ PROVÍNCIA : Factor w/ 5 levels "","Barcelona",..: 1 1 ...
 # $ CODI.COMARCA : int NA NA NA NA NA NA NA NA NA NA ...
 # $ COMARCA : Factor w/ 43 levels "","Alt Camp",..: 1 1 1...
 # $ CODI.MUNICIPI : int NA NA NA NA NA NA NA NA NA NA ...
 # $ MUNICIPI : Factor w/ 948 levels "","Abella de la Conca",..: 1 1 1 1 1 1 1 1 1 1 ...
 # $ CODI.DISTRICTE : int NA NA NA NA NA NA NA NA NA NA ...
 # $ NOM : Factor w/ 11 levels "","Ciutat Vella",..: 1 1 ...
 # $ SIGLES : Factor w/ 39 levels "ALS","ALTERNATIVA",..: ...
 # $ PARTIT : Factor w/ 39 levels "Alternativa Liberal Social"
 # $ VOTS.PARTITS : Factor w/ 1573 levels "0","1","1.005",...
 # $ X..VOTS...VÀLIDS: num 38.43 18.38 12.37 7.37 7 ...
 # $ ESCONS : int 62 28 18 10 10 3 4 0 0 0 ...

# Veiem que el nom del percentatge de vots valids s'ha importat de forma estranya i tot seguit ho corregim de la següent forma

names(eleccions2010) = gsub("X..VOTS...VÀLIDS", "perVotsValids", names(eleccions2010))

# Arreglar el nombre de vots ja que els milers estan separats per punts i volem que sigui un integer

eleccions2010$VOTS.PARTITS = as.character(eleccions2010$VOTS.PARTITS)

votsPartits = gsub("[.]", "", eleccions2010$VOTS.PARTITS)

votsPartits = as.numeric(votsPartits)

eleccions2010$VOTS.PARTITS = votsPartits

Seguint els passos anteriorment descrits ja tenim les dades de les eleccions al Parlament de Catalunya de l’any 2010 a l’R amb els petits problemes solucionats. D’aquesta forma ja podem fer les estadístiques o les representacions visuals que desitgem. En el meu cas, quan torni de les merescudes vacances, crec que els hi podré treure bastant profit i ja publicaré el que faci.

Bones vacances,

Lluís Ramon, RUGBCN


		

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: