Haciendo gráficos con R ¿cuáles son vuestras preferencias?

¿Cuál de estos gráficos de cajas os gusta más? Base de R: png('C:/temp/base.png', bg = "white", res = 100, width = 450, height = 600) boxplot(Petal.Length ~ Species, data = iris, main = "Gráfico con Base") dev.off() Con lattice: library(lattice) png('C:/temp/lattice.png', bg = "white", res = 100, width = 450, height = 600) # Paquete lattice x <- bwplot(Petal.Length ~ Species, data = iris, main = "Gráfico con Lattice") print(x) dev.off() Con ggplot2: library(ggplot2) png('C:/temp/ggplot2.png', bg = "white", res = 100, width = 450, height = 600) # Paquete ggplot2 x2 <- ggplot(iris, aes(Species, Petal.Length)) x2 + geom_boxplot() + ggtitle("Gráfico con ggplot2") dev.off() Tres muestras del mismo gráfico de cajas realizado con R. Tres sintaxis muy sencillas, pero boxplot es más fácil si cabe. Parece que estéticamente ganaría ggplot2; sin embargo, todo es jugar con más opciones, aunque se complicaría el código. En mi opinión, creo que sale ganando ggplot2, pero no es tanta la diferencia.

14 de noviembre de 2010 · rvaquerizo

Objetos hash para ordenar tablas SAS

A partir de la versión 9.1 de SAS se incluyeron los objetos hash. Hace tiempo ya demostramos su eficiencia en el cruce de tablas y hoy quería mostraros cómo se programa una ordenación empleando hash. La verdad es que estoy saboreando mis últimos días con SAS v9.2; en breve volveré a una versión muy anterior. El código, en mi opinión, es muy sencillo y, como es habitual, tenemos un ejemplo ilustrativo: ...

12 de noviembre de 2010 · rvaquerizo

Abreviar código en Enterprise Guide

En Enterprise Guide de SAS podemos ahorrarnos código empleando las abreviaturas del editor. Yo no lo recomiendo porque nuestros códigos sólo podrán ser ejecutados con nuestros equipos, pero Guide es una herramienta pensada para los usuarios y no para el desarrollo de código. Sobre un programa de Guide pulsamos sobre Programas -> Añadir abreviaturas y aparece la siguiente ventana: En la ilustración que os pongo hemos creado la abreviatura ps que equivale a proc sql. Con ello, cada vez que en el editor de programas de Guide pongamos ps veremos lo siguiente: ...

11 de noviembre de 2010 · rvaquerizo

Trucos SAS. Ejecutar un código si existe una tabla o un fichero

Esta duda me llegó hace unos días. Se trataba de ejecutar un código si existía determinado fichero o determinada tabla. Para hacer esto, os planteo una posible metodología que yo utilizaba cuando programaba SAS en una gran entidad bancaria con Enterprise Guide 1; por aquel entonces hacía maravillas con la “castaña” del Guide v1. Entre ellas, unas macros que contenían una sentencia condicional que ejecutaba un código en función de la función (bonita expresión) EXIST o FILEEXIST. Lo que yo hacía era algo parecido a esto: ...

10 de noviembre de 2010 · rvaquerizo

Algunos temas de interés sobre R

No había escrito nada sobre ello porque muchos de mis lectores sé que están al corriente de la realización de las II Jornadas de R en castellano. Este año se organizan en la Escuela Politécnica de Mieres y tienen un par de talleres muy interesantes. A ver qué tal funciona la experiencia de los talleres; particularmente, sí me parece buena opción. Desgraciadamente, no contarán con mi presencia, el más ferviente defensor de R en los foros de dinosaurios gestores de la información. Mis deberes familiares (cada vez más numerosos) y un nuevo cambio en el rumbo de mi trayectoria profesional me impiden acudir. La siguiente edición será. ...

8 de noviembre de 2010 · rvaquerizo

Macros (fáciles) de SAS. Normaliza un texto rápido

¿Tienes que normalizar un texto con SAS? Llevas dos horas buscando funciones de texto con la ayuda y te has crispado. En una macro y de forma muy rápida, os planteo un muestrario de funciones con las que podéis normalizar (un poco) un texto. Ésto es algo que tuve que hacer la otra mañana; no es muy sofisticado pero puede seros de utilidad: %macro prepara(varib); &varib. = translate(&varib., "AEIOU", "ÁÉÍÓÚ"); &varib. = tranwrd(&varib., "NUM", "NUMERO"); &varib. = tranwrd(&varib., "CONT", "CONTABLE"); &varib. = tranwrd(&varib., "IMP ", "IMPORTE "); &varib. = tranwrd(&varib., " POR ", " "); &varib. = tranwrd(&varib., " DE ", " "); &varib. = tranwrd(&varib., " EN ", " "); &varib. = tranwrd(&varib., " LOS ", " "); &varib. = tranwrd(&varib., " AL ", " "); &varib. = tranwrd(&varib., " EL ", " "); &varib. = tranwrd(&varib., " ULTIMOS 12 ", " 12 "); &varib. = tranwrd(&varib., " ULTIMOS 3 ", " 3 "); &varib. = tranwrd(&varib., " ULTIMO MES ", " MES "); &varib. = tranwrd(&varib., " TRANSACCIOENES ", " TRANSACCIONES "); call prxchange(prxparse('s/([A-ZÑa-zñ 0-9]*)([^A-Za-zÑñ 0-9]*)/$1/'), -1, &varib.); %mend; En realidad es una sucesión de TRANWRD, pero destacaría el uso de la función TRANSLATE para eliminar tildes en nuestras vocales y el uso de CALL PRXCHANGE, del que ya tuvimos un aperitivo hace tiempo. ...

8 de noviembre de 2010 · rvaquerizo

Trucos Excel. Archivos de un directorio con una macro

Puede resultarnos útil tener todos los archivos de un directorio en una tabla de Excel. Si estamos documentando un proceso, si nos dan un gran número de ficheros y tenemos que realizar procesos repetitivos sobre ellos, si queremos tener inventariados nuestros programas… Para esto os planteo una macro bien sencilla que recorre un directorio y nos escribe los elementos que encuentra en él. El código Visual Basic para la macro en Excel no puede ser más sencillo: ...

2 de noviembre de 2010 · rvaquerizo

Duda de SAS. Longitud de la parte decimal de un número

Una búsqueda que me ha llegado: longitud de la parte decimal de un número con SAS. Nos sirve para recordar (me gusta insistir en el tema) cómo transformamos números en caracteres con SAS. La función PUT es la que realiza esta tarea: data _null_; y = 67.34123432; x = length(scan(put(y, best32.), 2, ".")); put x =; run; Transformamos un número a texto. Con SCAN buscamos la parte decimal, puesto que el separador será el .. Y con LENGTH tenemos la longitud resultante del texto obtenido. No sé para qué puede servir esto, pero ahí os planteo cómo se resuelve.

27 de octubre de 2010 · rvaquerizo

Emisión de bonos de la Generalitat Catalana. ¿Cómo permiten esto?

Iba a alertar sobre la emisión de bonos de la Generalitat. Pero en Gurusblog ya lo han hecho por mí. Además, su exposición es magistral. La expresión “tienes más peligro que los bonos de Rumasa” ha cambiado; ahora hay que decir “tienes más peligro que las emisiones de Montilla”. El caso es que no entiendo cómo permiten semejante engaño.

26 de octubre de 2010 · rvaquerizo

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