Macros SAS. Agrupando variables categóricas

Agrupar variables con SAS es una de las tareas más habituales. Las variables continuas las agrupamos según un criterio y las discretas, en principio, ya vienen agrupadas. El problema con las variables discretas es que pueden tomar muchos valores, muchos de ellos con poco peso que habitualmente agrupamos en un rango “OTROS”. Pues bien, hoy quería mostraros una macro muy sencilla que utilizo para crear ese cajón desastre. El código tiene algún aspecto muy interesante; es el que os pongo a continuación: ...

14 de junio de 2010 · rvaquerizo

Un homenaje a Malthus con R

Hoy quería yo reivindicar la figura de un tipo bastante maltratado: Thomas Malthus. Maltratado porque era un poco reaccionario y facha, y parece que eso es suficiente para que se olviden de uno, aunque fuera el tipo que más ha aportado a la demografía. Y el homenaje tenía que hacérselo con el paquete de R que más utilizo últimamente, el XML, y algunos sencillos gráficos creados con R-commander. Malthus lo que venía a decir es que somos muchos, demasiados, y encima la cosa tenía muy mala pinta. Parece que tiene razón, pero vamos a verlo gráficamente. Comenzamos: ...

13 de junio de 2010 · rvaquerizo

Truco SAS. Duplicar registros si cumplen una condición

Más que un truco, es una “tontería” SAS, pero sirve para entender mejor el paso DATA. Se trata de duplicar registros si cumplen una condición. Es decir, añadimos una fila en SAS si se cumple la condición: data uno; do id_cliente = 1 to 10000; output; end; run; data uno_duplicado; set uno; output; if mod(id_cliente, 2) = 0 then output; run; No puede ser más sencillo, pero me llegó esta duda y me parece un buen ejemplo de uso de OUTPUT. Saludos.

11 de junio de 2010 · rvaquerizo

Curso de lenguaje SAS con WPS. Ejecuciones

Hasta la fecha nos hemos aproximado a la interfaz de WPS y hemos ejecutado algunos scripts para trabajar con conjuntos de datos SAS y, sobre todo, entender qué hace el paso DATA. También hemos analizado qué son y cómo trabajan las librerías WPS. En nuevas entregas nos seguiremos centrando en el trabajo con datasets temporales y permanentes. La intención es conocer bien qué hace DATA y establecer una metodología de trabajo con WPS. SAS es un lenguaje orientado a la gestión de datos, y las personas acostumbradas a programar en otros lenguajes pueden tener muchos problemas conceptuales. Al final, con este manual intentaremos ayudar a todos aquellos que trabajáis con SAS a crear un método que permita que vuestros procesos funcionen de la forma más óptima para ganar tiempo y espacio en disco, los dos elementos más importantes cuando manejamos grandes volúmenes de datos. ...

9 de junio de 2010 · rvaquerizo

Ejemplo de uso del paquete XML de R

Quería poneros unos apuntes sobre el paquete XML de R. El caso es que, entre todos los fregados en los que ando metido, he retomado el tema de leer páginas web con R. Y con esto he llegado a la sentencia install.packages("XML") y, con la fiebre mundialista, estoy en lo siguiente: library(XML) pag <- "http://es.wikipedia.org/wiki/Anexo:Finales_de_la_Copa_Mundial_de_F%C3%BAtbol" # readHTMLTable devuelve una lista de tablas tablas <- readHTMLTable(pag) pagina <- data.frame(tablas[[1]]) ganador <- data.frame(substr(pagina$Ganador, 3, nchar(as.character(pagina$Ganador)))) names(ganador) <- "primero" segundo <- data.frame(substr(pagina$Segundo.puesto, 3, nchar(as.character(pagina$Segundo.puesto)))) names(segundo) <- "segundo" Muy sencillo: leemos la Wikipedia y nos creamos un objeto con las finales de todos los mundiales. Me voy a centrar en los finalistas. Parece que tengo algún problema con las tildes y con nulos. Grafiquemos un poco: ...

8 de junio de 2010 · rvaquerizo

Un acercamiento a GRAPH. ANNOTATE macros

No quiero entrar en muchos detalles sobre el uso de %annomac. Esta macro nos permite usar las macros de ANNOTATE. Estas macros sirven para trabajar con el PROC GANNO, del que ya hicimos una pequeña revisión. Ahora me gustaría presentaros un ejemplo de uso de estas macros y, sobre todo, me gustaría que analizarais el dataset SAS generado. Pongo directamente todo el código necesario: * OPCIONES NECESARIAS; goptions reset=global cback='white' colors=(black) xpixels=1000 ypixels=1000; %let pos_inicial_x = 50; %let pos_inicial_y = 99; Iniciamos con GOPTIONS y creamos unas posiciones iniciales. Estudiemos cómo trabaja %annomac: ...

7 de junio de 2010 · rvaquerizo

Trucos Excel. Mapa de España por Comunidades Autónomas

Vamos a mejorar muchos de nuestros informes con mapas de España realizados a través de Excel. Os contaré la metodología que empleo para realizarlos y a partir de ahí vosotros podréis mejorarlos. Voy a realizar un mapa de España por Comunidades Autónomas y le vamos a modificar en función del gasto en prestaciones por desempleo (http://www.tt.mtin.es/periodico/laboral/201006/mayo.pdf). Todo empieza por conocer los archivos SVG y pasa por agradecer a los usuarios de la Wikipedia que distribuyan todo tipo de mapas realizados por ellos mismos y de uso libre. En este caso buscamos un mapa de España por Comunidades Autónomas. Necesitamos una aplicación libre para manejar estos mapas y la mejor, más adecuada y la que yo uso es Inkscape; la conocí ayer por la mañana, después me harté de botellines, me fui a sembrar unas guindillas y a día de hoy ya hago mis pinitos con el portátil del trabajo, porque en el mío no funciona. Da problemas en Windows de 64 bits (¡sí!, uso Windows, como tú que lees esto, ya que es muy poco probable que pertenezcas al 3% que usa Mac o al 3% que usa Linux). Con esta aplicación tenemos a nuestro alcance ver perfectamente qué es lo que hace el XML y que espero termine en un paquete de R para hacer mapas de España. Bien, tenemos Inkscape y el mapa por Comunidades de Wikipedia, y ahora viene un trabajo muy sencillo, muy aburrido y muy en la línea de un tipo mediocre como el que escribe ahora mismo. Voy a copiar en Inkscape y pegar en Excel cada Comunidad Autónoma, lo transformo en un objeto de MS Office para que me sea más sencillo modificarle las propiedades y le doy un nombre a cada figura. Tras 5 minutos haciendo un puzle, tengo algo parecido a esto en Excel: ...

5 de junio de 2010 · rvaquerizo

Curso de lenguaje SAS con WPS. Lectura de ficheros de texto

Leer ficheros de texto con lenguaje SAS no es sencillo debido a la escasa flexibilidad de SAS. La cosa se complica cuando leemos texto con WPS. Empleando el asistente de SAS y haciendo recall podemos leer ficheros con bastante comodidad. Eso no lo podemos hacer con WPS porque no dispone de asistente ni nada parecido al EFI de SAS. Así que tenemos que tantear con INPUT hasta conseguir leer el fichero correctamente. Pero esta entrada nos permite conocer mejor cómo funciona el paso DATA. Más adelante veremos cómo hacerlo con el PROC IMPORT. El primer ejemplo importa un fichero de texto de este tipo: ...

3 de junio de 2010 · rvaquerizo

Curso de lenguaje SAS con WPS. Qué hace el paso DATA

El elemento principal del lenguaje SAS es el paso DATA. Este elemento crea, modifica y transforma conjuntos de datos SAS (datasets). El paso DATA se compone de dos fases: la fase de compilación y la fase de ejecución. En la fase de compilación, DATA crea una estructura de memoria conocida como Program Data Vector (PDV), con la estructura que SAS considera más adecuada para el conjunto de datos; paralelamente, crea toda una descripción de la información del dataset. Una vez creada la estructura de la tabla SAS, se pasa a la fase de ejecución, en la que SAS itera por cada registro haciendo “output” en el dataset cuando llega a la sentencia RUN. La iteración se lleva a cabo hasta que SAS detecta el final del archivo. ...

29 de mayo de 2010 · rvaquerizo

Un acercamiento a GRAPH. ODS GRAPHS PROC SGPLOT

No todos los procedimientos gráficos de SAS son tan malos y tan complejos. Hay una serie de procedimientos como el PROC SGPLOT que nos permiten realizar gráficos muy vistosos y con una sintaxis más sencilla. Estos procedimientos son los que vamos a denominar ODS GRAPHS. Como siempre, en estas líneas, sólo os voy a acercar a algunas de las posibilidades que ofrece el PROC SGPLOT (a futuro veremos más) y despertar vuestra curiosidad. Hay documentación muy completa en la red al respecto; además, y sin que sirva de precedente, la ayuda de SAS es muy correcta. ...

28 de mayo de 2010 · rvaquerizo