Visualizando Datos: 
la geolocalización como herramienta 
emergente de análisis demográfico 
Presentación RugBCN 9 de Octu...
ESTRUCTURA DE LA PRESENTACIÓN 
INTRO: CAMBIO DEMOGRÁFICO Y GESTIÓN MUNICIPAL DE LA DIVERSIDAD 
1. LECTURA DE FICHEROS GRAN...
INTRO: CAMBIO DEMOGRÁFICO Y GESTIÓN MUNICIPAL DE LA DIVERSIDAD 
http://gedemced.uab.cat
AVISO A NAVEGANTES 
• Soy un usuario de R autodidacta (mejor dicho blog-didacta). 
• Lo que presentaré aquí ha funcionado ...
LECTURA DE FICHEROS GRANDES, ENORMES (I) 
Padrón municipal del habitantes: 47.265.321 personas (filas) en 2012. 
Fuentes d...
LECTURA DE FICHEROS GRANDES, ENORMES (II) 
1. Necesitamos transformar el archivo en algo con lo que podamos trabajar en R ...
LECTURA DE FICHEROS GRANDES, ENORMES (III) 
La operación realizada con la función sqldf nos devuelve un data-frame que, en...
DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS (I) 
Tengo un data-frame de 35.960 observaciones (filas) y 24 v...
DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS (II) 
1. Determino un directorio de trabajo donde irán a parar ...
DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS (III) 
Resultado: de tener 
un data-frame con 
35.960 observaci...
DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (I) 
Tengo un shapefile de la composición territorial de E...
DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (II) 
Esta tarea pude ser realizada en R en 5 pasos: 
1. C...
DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (III) 
4. Establecer un directorio de trabajo donde van a ...
DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (IV) 
Resultado: de tener un 
archivo .shp gigantesco, 
pa...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (I) 
El package plotGoogleMaps permite graficar, proyectando sobre ...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (II) 
Para graficar un SpatialPoligonsDataFrame (SPDF), proyectándo...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (III) 
Para realizar nuestro mapa: 
1. ### CARGAR PACKAGES ### 
lib...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (IV) 
Para realizar nuestro mapa: 
3. ### CARGAR DATOS A REPRESENTA...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (V) 
Para realizar nuestro mapa: 
5. ### MUY IMPORTANTE: ORDENO LOS...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (VI) 
Para realizar nuestro mapa: 
6. ### AGREGO, AL APARTADO DE DA...
GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (VII) 
Para realizar nuestro mapa: 
7. ### DETERMINO LOS COLORES (F...
GEOLOCALIZACION DE INFORMACION: PLOTGOOGLEMAPS PACKAGE (VIII) 
Para realizar nuestro mapa: 
10. ### HAGO MI MAPA ### 
A080...
GEOLOCALIZACION DE INFORMACION: PLOTGOOGLEMAPS PACKAGE (IX) 
Resultado:
VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (I) 
El package googleVis proporciona un nexo (interfaz) entre R y el Google Chart T...
VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (II) 
Crear una Tabla de consulta on-line con googleVis: 
library (googleVis) 
data<...
VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (III) 
Crear una Tabla de consulta on-line con googleVis: 
PROVINCIAS_tabla <- gvisT...
VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (IV) 
Crear una Motion Chart de consulta on-line con googleVis: 
BC <- gvisMotionCha...
VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (IV) 
Para insertar un objeto del tipo gvis en una página web: 
1. Subimos nuestro a...
Muchas gracias por vuestra atención 
contacto: jgaleano@ced.uab.es 
http://gedemced.uab.cat 
GEDEM –Grup d’Estudis Demogrà...
Próxima SlideShare
Cargando en…5
×

Visualizando Datos: la geolocalización como herramienta emergente de análisis demográfico

757 visualizaciones

Publicado el

Presentación realizada en la reunión mensual del grupo de usarios de R en Barcelona (RugBCN). Octubre de 2013

Publicado en: Datos y análisis
1 comentario
2 recomendaciones
Estadísticas
Notas
Sin descargas
Visualizaciones
Visualizaciones totales
757
En SlideShare
0
De insertados
0
Número de insertados
6
Acciones
Compartido
0
Descargas
4
Comentarios
1
Recomendaciones
2
Insertados 0
No insertados

No hay notas en la diapositiva.

Visualizando Datos: la geolocalización como herramienta emergente de análisis demográfico

  1. 1. Visualizando Datos: la geolocalización como herramienta emergente de análisis demográfico Presentación RugBCN 9 de Octubre 2013 JUAN GALEANO
  2. 2. ESTRUCTURA DE LA PRESENTACIÓN INTRO: CAMBIO DEMOGRÁFICO Y GESTIÓN MUNICIPAL DE LA DIVERSIDAD 1. LECTURA DE FICHEROS GRANDES, ENORMES 2. DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS 3. DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP 4. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE 5. VISUALIZANDO DATOS: GOOGLEVIS PACKAGE
  3. 3. INTRO: CAMBIO DEMOGRÁFICO Y GESTIÓN MUNICIPAL DE LA DIVERSIDAD http://gedemced.uab.cat
  4. 4. AVISO A NAVEGANTES • Soy un usuario de R autodidacta (mejor dicho blog-didacta). • Lo que presentaré aquí ha funcionado para mi. • Sin lugar a dudas hay maneras más eficientes y, sobretodo, elegantes de programar. • Para conocer toda la verdad sobre las funciones y packages que repasaremos en esta presentación, lo mejor es leer atentamente la documentación elaborada por sus desarrolladores.
  5. 5. LECTURA DE FICHEROS GRANDES, ENORMES (I) Padrón municipal del habitantes: 47.265.321 personas (filas) en 2012. Fuentes de los datos: Instituto Nacional de Estadística (INE). Formato: .sav (SPSS) Variables incluidas en el fichero: • provincia, • municipio, • distrito, • sección, • sexo, • edad, • pronac (provincia de nacimiento), • paisnac (paisnac), • munnac, • año ¿Qué hacemos con esto? ¿Cómo podemos trabajar en R con un fichero de este tamaño?
  6. 6. LECTURA DE FICHEROS GRANDES, ENORMES (II) 1. Necesitamos transformar el archivo en algo con lo que podamos trabajar en R (.txt, .csv) Guardamos el archivo .sav como un .csv delimitado por ; 2. Utilizamos la función file para conectar con el fichero que nos interesa padro2012 <- file("C:/Users/ced/Desktop/PC2012.csv“) 3. Utilizamos el package sqldf (función homónima) para leer el archivo en R pidiendo que los datos sean agrupados de la manera que convenga (en este caso por sección censal). padro2012a <- sqldf("select provincia, municipio, distrito, seccion, pronac, paisnac, count(*) from padro2012 group by provincia, municipio, distrito, seccion, pronac, paisnac", dbname = tempfile(), file.format = list(header = T, row.names = F, sep = ";"), stringsAsFactors = FALSE)
  7. 7. LECTURA DE FICHEROS GRANDES, ENORMES (III) La operación realizada con la función sqldf nos devuelve un data-frame que, en este caso, esta compuesto de 2.031.894 observaciones (filas) y 7 variables (columnas)
  8. 8. DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS (I) Tengo un data-frame de 35.960 observaciones (filas) y 24 variables (columnas). Necesito dividir esta información sobre la población a nivel de sección censal agrupándola por municipios.
  9. 9. DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS (II) 1. Determino un directorio de trabajo donde irán a parar los archivos. setwd ("C:/Users/CED/Dropbox/R/DATA/MUNICIPIOS") 2. Divido el fichero por municipios (conservando todas las variables e incluyendo todas secciones censales de cada municipio) utilizando la función split. spt1 <- split(secc2011, secc2011$codmun) #esto genera un List de 8.116 elementos 3. creo los 8116 archivos correspondientes a los municipios de España en 2011 utilizando las funciones lapply, names y write.table. lapply(names(spt1), function(x){ write.table(spt1[[x]], file = x)}) Nota: también podríamos agregar una extensión en la tablas utilizando la función paste write.table(spt1[[x]], file = paste(x, ".Rdata", sep = "") http://stackoverflow.com/questions/10002021/split-dataframe-into-multiple-output-files-in-r
  10. 10. DIVIDIR UN DATA-FRAME DE ACUERDO A UNA VARIABLE DE INTERÉS (III) Resultado: de tener un data-frame con 35.960 observaciones y 24 variables, paso a tener una carpeta en la que he creado 8.116 tablas, una para cada municipio de España en 2011, de 24 variables cada una.
  11. 11. DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (I) Tengo un shapefile de la composición territorial de España en el año 2011 por secciones censales. Lo que necesito es poder dividir este archivo en un múltiples shapefiles que contengan la división por secciones censales agrupadas a nivel municipal. Info detallada sobre archivos .shp http://en.wikipedia.org/wiki/Shapefile Mapa de España por secciones censales año 2011. Fuente Instituto Nacional de Estadística.
  12. 12. DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (II) Esta tarea pude ser realizada en R en 5 pasos: 1. Cargar las packages que necesitaré utilizar (sp) y (rgal): library (sp) library (rgal) 2. Leer el shapefile que quiero dividir utilizando la función readOGR, contenida por el package rgal SPAIN <- readOGR("C:/Users/ced/Dropbox/MAPAS/SECCIONES ESPAÑA Y BALEARES 2011", "PeninsulayBaleares2011") 3. Crear un vector con valores únicos para cada subregión (municipios en este caso), utilizando la función unique. y <- unique(SPAIN@data$PROVMUN2)
  13. 13. DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (III) 4. Establecer un directorio de trabajo donde van a ir a para los nuevos archivos .shp setwd ( “C:/Users/ced/Dropbox/MAPAS/SECCIONES POR MUNICIPIO 2011”) 5. Crear un shapefile para cada una de las subregiones y guardarlos como archivos .shp. Para ello utilizo un for loop y la función writeOGR del package rgdal. for (i in 1:length(y) ) { temp3 <- SPAIN[SPAIN$PROVMUN2 == y[i], ] writeOGR(temp3, dsn=getwd(), y[i], driver="ESRI Shapefile", overwrite_layer=TRUE) } http://stackoverflow.com/questions/13175489/create-many-shape-file-from-a-large-shape-file
  14. 14. DIVIDIR UN ARCHIVO DE EXTENSIÓN .SHP EN MULTIPLES ARCHIVOS .SHP (IV) Resultado: de tener un archivo .shp gigantesco, paso a tener una carpeta en la que he creado 32.464 archivos. 4 archivos por cada municipio. 32.464/4 = 8.116 municipios de España en 2011. Esta operación tardó casi un día en realizarse.
  15. 15. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (I) El package plotGoogleMaps permite graficar, proyectando sobre Google Maps, 5 tipos de objetos: 1. SpatialPointsDataFrame 2. SpatialLinesDataFrame 3. SpatialPoligonsDataFrame 4. SpatialPixelsDataFrame 5. SpatialTemporalDataFrame (STFDF & STIDF) (Full Lattice & Irregular) Adicionalmente, se pueden combinar 2 o más de los objetos 1-4 en un gráfico-mapa “multi-capa”. Info detallada: http://cran.r-project.org/web/packages/plotGoogleMaps/vignettes/plotGoogleMaps-tutorial. pdf
  16. 16. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (II) Para graficar un SpatialPoligonsDataFrame (SPDF), proyectándolo sobre Google Maps, necesitamos cargar 3 packages: 1. maptools (con el que leeremos el SPDF en R) 2. rgal (con el que determinaremos la proyección geográfica correspondiente) 3. plotGoogleMaps (con el que crearemos el archivo de extensión .html de nuestro mapa) Nota: también podríamos leer el SPDF con la función readOGR del package rgal, cada quien a su gusto. Además necesitamos: • Una base cartográfica (archivo de extensión .shp), y • Un archivo (data-frame) que contenga los datos que queremos representar.
  17. 17. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (III) Para realizar nuestro mapa: 1. ### CARGAR PACKAGES ### library (maptools) library (plotGoogleMaps) library (rgdal) 2 . ### CARGAR LA BASE CARTOGRÁFICA ### A08019.shp <- readShapeSpatial("C:/Users/ced/Dropbox/MAPAS/SECCIONES POR MUNICIPIO 2011/A08019") plot(A08019.shp) Mapa del municipio de Barcelona por secciones censales. Fuente Instituto Nacional de Estadística.
  18. 18. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (IV) Para realizar nuestro mapa: 3. ### CARGAR DATOS A REPRESENTAR ### A08019 <- read.table("C:/Users/CED/Dropbox/R/DATA/MUNICIPIOS/A08019",header=T, quote=""") 4. ### UNIR LOS DATOS QUE QUEREMOS REPRESENTAR A LA BASE CARTOGRÁFICA ### mun <- merge(A08019.shp@data, A08019, by ="codi")
  19. 19. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (V) Para realizar nuestro mapa: 5. ### MUY IMPORTANTE: ORDENO LOS DATOS DE ACUERDO AL ORDEN DE LOS OBJETOS DE LA BASE CARTOGRÁFICA ### mun2b <- mun[order(order(A08019.shp@data$codi)), ]
  20. 20. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (VI) Para realizar nuestro mapa: 6. ### AGREGO, AL APARTADO DE DATOS DEL SPDF, LAS VARIABLES QUE ME INTERESA QUE APAREZCAN EN EL CUADRO DE DIÁLOGO ### A08019.shp@data$CAT <- mun2b$Tipus_Residencial A08019.shp@data$PT <- mun2b$Poblacio_Total A08019.shp@data$ESP <- mun2b$PES A08019.shp@data$LA <- mun2b$PLA A08019.shp@data$WE <- mun2b$PEOc A08019.shp@data$EE <- mun2b$PEOr A08019.shp@data$AF <- mun2b$PAF A08019.shp@data$AS <- mun2b$PAS A08019.shp@data$OT <- mun2b$PAL colnames(A08019.shp@data) <- c("ID", "CAT", "Total pop.", "Spanish", "Latin-American", "Western Europe", "Eastern Europe", "Africa", "Asia", "Others")
  21. 21. GEOLOCALIZACIÓN DE INFORMACIÓN: PLOTGOOGLEMAPS PACKAGE (VII) Para realizar nuestro mapa: 7. ### DETERMINO LOS COLORES (FORMATO HTML) CON QUE QUIERO UTILIZAR ### colores <- c("#4F9E35","#44F608","#FC9272","#FB6A4A") #4F9E35= #44F608= #FC9272= #FB6A4A= 8. ### DETERMINO EL SISTEMA DE PROYECCION GEOGRAFICA ### Para ello utilizo la función proj4string del package rgdal proj4string(A08019.shp) <- CRS("+proj=utm +zone=30N +ellps=intl +units=m +towgs84=- 87,-96,-120 +no_defs") 9. ### ESTABLEZCO EL DIRECTORIO DONDE SE GUARDAN LOS ARCHIVOS HTM Y PNG ### setwd ("C:/Users/ced/Desktop/RugBCN 2013")
  22. 22. GEOLOCALIZACION DE INFORMACION: PLOTGOOGLEMAPS PACKAGE (VIII) Para realizar nuestro mapa: 10. ### HAGO MI MAPA ### A08019M <- plotGoogleMaps (A08019.shp, zcol = "CAT", colPalette = colores, streetViewControl=TRUE, strokeColor = "Black", map.width = "80%", map.height ="100%", control.width ="20%", control.height ="80%", zoom=12, fitBounds=FALSE, layerName= paste(A08019[1, c("Nom_Mun")], "2011", sep=" "), filename = paste("A08019", "htm", sep="."))
  23. 23. GEOLOCALIZACION DE INFORMACION: PLOTGOOGLEMAPS PACKAGE (IX) Resultado:
  24. 24. VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (I) El package googleVis proporciona un nexo (interfaz) entre R y el Google Chart Tools. Las funciones del googleVis package permiten visualizar datos almacenados como data-frames en R utilizando los tipos de representación del Google Chart Tools, sin que haya necesidad de subir nuestros datos a Google. El resultado de la ejecución de una función del googleVis package es un código HTML que contiene los datos y las referencias a funciones JavaScript alojados por Google. La finalidad del googleVis package es la creación de gráficos que, además de poder ser ejecutados de forma local, puedan insertarse fácilmente en una página web. De entre los distintos tipos de representación posibles, aquí nos ocuparemos de dos. 1. Tables 2. Motion Charts Info detallada: http://cran.r-project.org/web/packages/googleVis/vignettes/googleVis.pdf
  25. 25. VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (II) Crear una Tabla de consulta on-line con googleVis: library (googleVis) data<- read.csv ("C:/Users/CED/Dropbox/R/DATA/PROVINCIAS_2000_2010_SEGREGACION.csv")
  26. 26. VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (III) Crear una Tabla de consulta on-line con googleVis: PROVINCIAS_tabla <- gvisTable(data, options=list(width=705, height=513), chartid= "PROVINCIAS") plot (PROVINCIAS_tabla) Guardamos nuestra tabla en un archivo de extensión .htm print(PROVINCIAS_tabla, file="C:/Users/ced/Desktop/RugBCN 2013/TABLA_PROVINCIAS.htm")
  27. 27. VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (IV) Crear una Motion Chart de consulta on-line con googleVis: BC <- gvisMotionChart(data, idvar = "Provincia", time = "Año", xvar = "[e]Disimilitud", yvar = "[g]Aislamiento", colorvar = "[d]Porcentaje nacidos extranjero", sizevar = "[a]Población total", options= list (height= 513, width= 713), chartid="GEDEM_2013") plot (BC) Guardamos nuestra tabla en un archivo de extensión .htm print(BC, file="C:/Users/ced/Desktop/RugBCN 2013/TABLA_PROVINCIAS.htm")
  28. 28. VISUALIZANDO DATOS: GOOGLEVIS PACKAGE (IV) Para insertar un objeto del tipo gvis en una página web: 1. Subimos nuestro archivo de extensión .htm al servidor donde tengamos la web. 2. Utilizamos un iframe para insertarlo en nuestra página: {iframe width="715" height="700"}http://ced-nova. uab.cat/gedem/documents/SEG_PROV_ESP1.htm{/iframe} FINAL DE LA PRESENTACIÓN Agradecimientos: al Dr. Tim Riffe https://sites.google.com/site/timriffepersonal/, a Lluis Ramón por su presentación sobre mapas con R realizada en la reunión del RugBCN de 2012 http://rpubs.com/Lluis_Ramon/Presentacio_mapes_amb_R, al resto de miembros de RugBCN, a los desarrolladores de los packages utilizados, a quienes hacen preguntas en los distintos foros de usuarios de R y, sobre todo, a quienes las contestan 
  29. 29. Muchas gracias por vuestra atención contacto: jgaleano@ced.uab.es http://gedemced.uab.cat GEDEM –Grup d’Estudis Demogràfics i de les Migracions @GEDEM_CED

×