Mapas con spatial data de R

Vamos a hacer mapas de México, España y Colombia con R. Y lo primero que tenemos que hacer es disponer de un objeto de R con los datos del mapa. Estos datos los vamos a obtener de http://www.gadm.org/country. Seleccionamos el país y el formato que deseamos descargar. Para ilustrar nuestros ejemplos, vamos a descargarnos los mapas de España, México y Colombia en formato R data. Vemos que tenemos distintas divisiones en función del nivel al que deseemos llegar. En este caso seleccionamos nivel 2 para España y nivel 1 para Colombia y México. Los hemos descargado a nuestro equipo (mejor descargarlo que no acceder a la web) y comprobamos que los archivos tengan extensión .Rdata. Una vez tengamos los archivos con su formato, su extensión y demás, ya podemos trabajar con ellos y vamos a trabajar con el paquete sp (spatial data): ...

9 de octubre de 2010 · rvaquerizo

Macros (fáciles) de SAS. Busca duplicados

Una macro muy sencilla que ha aparecido en un programa de funcionalidades y que busca registros duplicados en tablas SAS. Es muy sencilla y a alguien puede serle útil y para eso estamos, para compartir conocimientos aunque sean sencillos. Pocos somos los que compartimos nuestro conocimiento y encima poniendo nuestro dinero, en fin, que me distraigo del tema. %macro busca_duplicados ( dataset, campo); proc sql; create table duplicados (where=(frec>1)) as select &campo., count(*) as frec from &dataset. group by 1; quit; %mend; No pongo ni ejemplo de uso, muy fácil. Pero ya verás como alguien le saca partido. Y todo esto de forma altruista, insisto, que si no me valoro yo no me valora nadie. Saludos.

7 de octubre de 2010 · rvaquerizo

Descubriendo ggplot2

Bye bye plot, bye bye points, bye bye abline… Como la canción Bye bye life. He escrito en el Tinn-R install.packages("ggplot2") y estoy como un niño con zapatos nuevos. Así estoy desde que he comenzado a trabajar con el paquete ggplot2 de R. No es que no lo conociera, es que me defiendo demasiado bien con mis plot y mis points. Había visto algún gráfico espectacular pero el código asustaba. Sin embargo este paquete es tema de conversación todas las semanas con algún usuario de R. Entonces me siento delante de R y tras escribir library(ggplot2)… ...

2 de octubre de 2010 · rvaquerizo

La función LAG de SAS

La función LAG de SAS nos devuelve el valor de la observación $n - i$ de la variable indicada. Me explico con un ejemplo: data lagn; do i = 1 to 10; lag_1 = lag(i); lag_2 = lag2(i); lag_3 = lag3(i); lag_4 = lag4(i); lag_5 = lag5(i); lag_6 = lag6(i); output; end; run; Esto produce: LAG(i) nos da el valor de i para la observación anterior, LAG2(i) nos da el valor de las 2 observaciones anteriores… In el caso de encontrarnos in las primeras observaciones, el valor que devuelve es el missing. Con ella podemos evitar trabajar con RETAIN a la hora de hacer sumas acumuladas: ...

1 de octubre de 2010 · rvaquerizo

Stadistical data warehouse del European Central Bank con R y los depósitos a pérdidas

Más ejemplos de uso del paquete de R XML. Vamos a leer datos del data warehouse del European Central Bank. Si dais una vuelta por la web tendréis interesantes datos económicos de los países de la Unión Europea. A modo de ejemplo, vamos a leer los datos de los tipos de interés medios a 12 meses que se están dando por los bancos en España y la evolución del Euribor a 6 meses. ...

29 de septiembre de 2010 · rvaquerizo

Macros SAS. Dataset a data frame R

Voy a presentaros la versión Beta de la macro de SAS que genera data.frames a partir de una tabla SAS en Windows; la versión en Linux me la ahorraré hasta el día que pueda instalar SAS en mi máquina virtual. La macro la iré mejorando y evolucionando; probablemente estas mejoras no las colgaré y no retomaré el hilo hasta que tenga una V1. El tema es sencillo y anteriormente ya hice mención a este método, pero ahora doy una vuelta de tuerca y directamente creamos data.frames a partir de datasets. Os pongo el total del código y comentaré los pasos más interesantes; por supuesto, es mejorable. Lo que no puedo asegurar es si funciona bajo WPS porque no me han renovado la licencia. Todo el código seguido: ...

28 de septiembre de 2010 · rvaquerizo

Personas que no comprendo. «I hate SQL»

Mi amigo Carlos escribió esta entrada en su blog. Si fuera un manifiesto, la primera de las firmas de apoyo sería la mía. Cuando programamos en SAS, hemos de usar PROC SQL siempre que podamos. Fundamentalmente porque un programa puede ser usado por múltiples usuarios y en muchas ocasiones hemos de realizar migración entre aplicaciones, y casi todas las personas y sistemas pueden interpretar SQL. Con este argumento, si se puede hacer con el PROC SQL… En fin, esto me parece tan evidente que hoy sábado, después de acostar a mis hijos y navegar por la blogosfera, encontrarme con esto es demasiado para mí. ...

11 de septiembre de 2010 · rvaquerizo

Trucos R. Leer archivos XML con R

Un truco de R práctico que busca la colaboración de los lectores para mejorarlo. Se trata de leer ficheros XML con R. Los más asiduos ya sabéis qué paquete voy a emplear: el XML. En los últimos tiempos, la sentencia require(XML) aparece al principio de casi todos mis códigos en el Tinn-R. El ejemplo que ilustrará el truco lee de la BBDD del Banco Mundial en español el indicador de emisiones de CO2 en toneladas por habitante y año. La sintaxis es de este modo: ...

8 de septiembre de 2010 · rvaquerizo

Trucos SAS. Mejor que hash IN para cruzar tablas

El otro día Fernando comentó que los cruces de tablas más rápidos entre tablas grandes y tablas pequeñas son las sentencias condicionales sobre listas. Tiene razón. Es una práctica muy habitual en SAS cuando leemos tablas de Oracle la realización de listas; ésto derivará en otro truco SAS en breves días. El caso es que me gustaría que probarais este código: * CONJUNTO DE DATOS GRANDE; data grande; do i = 1 to 20000000; idcliente = int(ranuni(0) * 1000000); output; end; drop i; run; * CONJUNTO DE DATOS PEQUEÑO, SIN DUPLICADOS; data pequenio; do i = 1 to 2000000; idcliente = int(ranuni(34) * 1000000); if mod(idcliente, 1132) = 0 then output; end; drop i; run; proc sort data=pequenio nodupkey; by idcliente; run; * CREAMOS LA LISTA EN UNA MACROVARIABLE; proc sql noprint; select idcliente into :lista separated by " " from pequenio; quit; * CRUCE MEDIANTE SENTENCIA IN; data machea5; set grande; if idcliente in (&lista.); run; Bueno, el tiempo de ejecución de este cruce de tablas es de unos pocos segundos. Mejora a las soluciones planteadas el otro día y, sobre todo, es un código fácil, muy fácil. Se trata de crear listas de macrovariables y realizar un paso DATA con una sentencia condicional. ...

6 de septiembre de 2010 · rvaquerizo

Como abrir proyectos de Enterprise Guide corruptos o de una versión anterior

Muchos hemos sufrido este error trabajando con Enterprise Guide de SAS: Unable to open file as a valid project file Además de la pantalla: De este modo «tan sencillo» podemos recuperar los códigos de nuestro proyecto de Enterprise Guide siempre que sean proyectos *.egp y no *.seg. Por cierto, para abrir proyectos de versiones anteriores tenemos el Migration Wizard de Guide; da algunas pegas, prefiero este método. Un gran truco de http://www.dnmca.com.

3 de septiembre de 2010 · rvaquerizo