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

¿Truco? Leer sas7bdat sin SAS

Me han pasado una tabla SAS y no sé cómo llevármela a SPSS. Este problema es habitual y ha traído de cabeza a más de uno. Es lo que tienen estas herramientas tan propietarias; si en tu organización tienen WPS (bueno, bonito y barato), esto no pasa. En fin, me ha llegado esta cuestión y voy a plantearos una posible forma de resolverla. Podríamos usar los formatos XPORT; la persona que me pasa la tabla emplea el libname xport y me envía un fichero .xpt; sin embargo, esto no pasa. Casi siempre nos mandan el .sas7bdat y tenemos un problema. ...

5 de mayo de 2010 · rvaquerizo

Macros SAS. Limpiar una cadena de caracteres

Macro de SAS que he utilizado hoy para limpiar caracteres en una cadena de texto. Está muy limitada y es muy sencilla pero puede serviros: %macro valida(in,out); length escribe $55.; escribe=""; do i=1 to length(&in.); j=substr(&in.,i,1); if j in ('A','B','C','D','E','F','G','H','I','J','K', 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Ñ') then escribe=trim(escribe)||j; else if substr(&in.,i,1)=" " then escribe=trim(escribe)||"-"; else escribe=trim(escribe); drop i j escribe; end; &out.=tranwrd(compress(escribe),"-"," "); %mend; Es bastante mala y limitada, insisto. Si alguien aporta algo se agradecerá. El tema es que recorre una variable alfanumérica carácter a carácter y si no es una letra mayúscula se lo chimpunea sin ningún miramiento, aporta un poco más de talento cuando aparece un espacio en blanco. Ahí va el ejemplo de uso: ...

29 de abril de 2010 · rvaquerizo

Trucos R. Función ddply del paquete plyr

El paquete plyr de R tiene unas funciones que nos permiten hacer sumarizaciones de forma muy rápida y sencilla. Hoy quería trabajar con la función ddply(). Todos esos resúmenes y agregaciones que nos cuestan mucho código con la función ddply() pasan a ser de lo más sencillo. Al tajo, o mejor dicho, al ejemplo; como siempre, creo que ilustrar ddply() es mejor que entrar in su sintaxis, para eso está la ayuda. Creamos un data.frame con datos inventados que tendrá duplicados por id_cliente: ...

19 de abril de 2010 · rvaquerizo

Combinaciones de k elementos tomados de n en n. Con SAS y con R

Me gustaría plantearos un problema que me ha ocurrido recientemente con SAS. Necesitaba todas las posibles combinaciones de 9 elementos tomados de $n$ en $n$. Tenía que crear un dataset con todas estas combinaciones. Antes de ponerme a programar toca buscar en Google “sas combinations” y, tras un rato buscando, encuentro el siguiente link. Este link contiene una macro de SAS que nos permite crear todas las combinaciones de $k$ elementos tomados de $n$ en $n$: ...

10 de abril de 2010 · rvaquerizo

Trucos SAS. Macrovariable a dataset

En alguna ocasión he necesitado pasar el contenido de una macrovariable a un dataset SAS. Con el tiempo he ido refinando el código empleado para hacer esta tarea y, como es habitual, lo comparto con vosotros para que os ayude en vuestro trabajo diario en grandes bancos, aseguradoras, compañías energéticas y de telecomunicaciones en las que seguro que podéis encontrar un hueco para que podamos desarrollar proyectos de calidad (¡ejem!). ...

1 de abril de 2010 · rvaquerizo

Trucos Excel. Modificar la configuración regional con Visual Basic

Con Visual Basic podemos modificar la configuración regional. Podemos crear macros en Excel que nos realicen esta tarea. De este modo, si trabajamos con aplicaciones que tienen configuración americana, podemos cambiarla con una macro, pegar los valores y volver a cambiar la configuración. Para poner separador decimal “.” y separador de miles “,”, tendremos que emplear el siguiente código: Sub formato_americano() ' Macro para poner formato americano With Application .DecimalSeparator = "." .ThousandsSeparator = "," .UseSystemSeparators = False End With End Sub Es un excelente ejemplo de uso de Application. De forma análoga, si deseamos volver a la configuración europea, sólo debemos emplear los separadores del sistema: ...

21 de febrero de 2010 · rvaquerizo

Truco R. Valores perdidos a 0, ejemplo de uso de sapply

Muy habitual partirnos la cabeza con valores perdidos en R. Los NA pueden darnos algún quebradero de cabeza. Este truco es muy sencillo: transforma valores missing a 0 y nos sirve para aplicar funciones a data.frame con la función sapply. Veamos el sencillo ejemplo: x <- c(1, 23, 5, 9, 0, NA) y <- c(5, 45, NA, 78, NA, 34) dataf <- data.frame(x, y) mean(dataf$x, na.rm = TRUE) mean(dataf$y, na.rm = TRUE) # Podría interesarnos tener en cuenta los NAs sum(dataf$x, na.rm = TRUE) / nrow(dataf) sum(dataf$y, na.rm = TRUE) / nrow(dataf) Tenemos un data.frame con dos variables que contienen valores perdidos; deseamos crear una función que pase estos valores a 0 y aplicarlo al data.frame de partida: ...

31 de enero de 2010 · rvaquerizo

Los mejores y más útiles trucos de R

Como estamos medio de fiesta y da pereza poner in funcionamiento los engranajes del cerebro para producir ideas originales, me limitaré a apuntar un enlace en el que los usuarios han propuesto y votado sus mejores trucos de R. Para los más perezosos, indicaré que el campeón ha sido la función str(). Y para los menos perezosos, aparecen en la lista métodos para acceder y manipular datos alojados in GoogleDocs directamente. Saludos.

29 de diciembre de 2009 · cgbellosta

Trucos SAS. Unión de múltiples tablas SAS con un nombre parecido

Ha llegado una búsqueda y ponemos el truco. Creo que ya lo puse, pero no está mal recordarlo. Creamos 20 datasets aleatorios con 10 observaciones cada uno: %macro doit; %do i = 1 %to 20; data zzdatos_&i.; do i = 1 to 10; output; end; run; %end; %mend; Un bucle fácil de macros ha generado 20 datasets que se llaman ZZDATOS_n. Recomiendo siempre emplear nombres «absurdos» para el trabajo con esta metodología. Empleamos un PROC SQL sobre la librería DICTIONARY, en concreto sobre la tabla tables. proc sql noprint; select memname into :lista_tablas separated by " " from dictionary.tables where index(memname, "ZZDATO") > 0; quit; Recordemos que en SASHELP tenemos vistas de estas tablas, el SEPARATED BY es el que indica que hacemos una selección múltiple. ...

7 de diciembre de 2009 · rvaquerizo