SAS

Un acercamiento a GRAPH. PROC GCHART

Uno de los procedimientos más importantes a la hora de graficar con SAS es el PROC GCHART. Además nos va a servir para trabajar con PATTERN y LEGEND sentencias que nos dejamos en el anterior capítulo. GCHART nos permite realizar gráficos de barras, de esos que siempre hacemos en Excel porque es mas sencillo y mas rápido. Sin embargo en muchas ocasiones necesitamos automatizar informes y estudios, para ello es recomendable emplear SAS en vez del habitual Excel por eso estas líneas que estáis leyendo. Para GCHART podemos emplear las sentencias habituales de GRAPH pero PATTERN es especialmente importante porque SAS nos deja cada barra del mismo color. Para ilustrar el capitulo simulo la cartera de una compañía de seguros, durante 2009, mensualmente, las pólizas de esta compañía pueden ser anuladas, renovadas (nuestra cartera) o nueva producción:

Un acercamiento a GRAPH. Sentencias gráficas

A la hora de trabajar con SAS/GRAPH lo primero que vamos a escribir es:

Después tenemos que conocer las sentencias de GRAPH para dar forma a nuestros gráficos. Estas sentencias no van dentro de ningún procedimiento ni paso data, siempre van precedidas de distintas palabras clave que nos definen los elementos de un grafico o nos indican las opciones necesarias para su representación. Estas sentencias nos permitirán definir los ejes, patrones y opciones más globales, comenzaran por:

Comunicar SAS con R creando ejecutables Windows

Quiero trabajar hoy con la función put de SAS para la creación de ficheros ejecutables de Windows (.BAT) y también quiero comunicar SAS con R. Mato dos pájaros de un tiro y para ello vamos a crear un script de R que llamaremos desde SAS a partir de un archivo .BAT. Un ejemplo típico y muy sencillo que espero poder ir sofisticando con el paso del tiempo hasta llegar a paquetizarlo. Tiene los siguientes pasos:

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!). Tras la publicidad veamos el ejemplo:

Un acercamiento a GRAPH. Primeros gráficos con SAS

SAS es muy caro y tiene muchas limitaciones. Aunque puedas enchufarle gigas y gigas de datos tiene importantes lagunas y una de ellas es su motor gráfico. Por ello quiero dedicarle una serie de monográficos de acercamiento e intentar analizar las (pocas) posibilidades graficas de SAS. Los monográficos van a ser un poco inconexos y orientados a personas con algo de nivel de programación. Nos centraremos en el modulo GRAPH. Antes de empezar quiero recomendaros una web donde podréis ver mejor todas las posibilidades que nos ofrece SAS a la hora de graficar: http://robslink.com/SAS/Home.htm Esto si que es contenido y no lo que aporta esta web. Para comenzar esta serie vamos a trabajar con los procedimientos GCHART, GPLOT y GREPLAY. Como es habitual el primer paso es generar un dataset con datos mas o menos aleatorios:

Comparativa de Precio: WPS vs. SAS

Tenía pendiente comparar el precio entre SAS y WPS. La consultora MineQuest ya lo ha hecho por mi. Y ha dejado el resultado plasmado en este documento. En fin, cada cual que saque sus propias conclusiones. Con lo que se puede ahorrar en licencias se puede llamar a Datanalytics (por ejemplo), implantaría la herramienta y podría hacer una auditoría y optimización de los procesos empleados, eso si Carlos no está en Sebastopol o más lejos.

Un problema a WPS. Infile url no funciona

ERROR: url is not a valid access method. The access method names are : DDE, EMAIL

He encontrado una pega que no me gusta al WPS:

filename pepin url «http://news.google.es/news?q=banco santander&oe=utf-8&rls=org.mozilla:es-ES:official&client=firefox-a&um=1&ie=UTF-8&sa=N&hl=es&tab=wn»;

data uno;
infile pepin;
run;

No se puede hacer en WPS. Desconozco si es necesario otro modulo, pero es un problema. Aun asi me sigue gustando mucho.

Sigo migrando de SAS a WPS

Sigo con una hipotética migración de SAS a WPS. Fundamental, ¿qué sucede cuando leo tablas SAS? ¿Puedo leerlas, al fin y al cabo son propietarias? Ningún problema, podemos leer perfectamente tablas SAS. Si trabajamos en una librería con tablas SAS los ficheros generados serán .sas7bdat sin embargo si trabajamos en una librería sin tablas SAS los archivos generados serán .wpd; esto nos facilita trabajar conjuntamente con WPS y SAS, esto nos facilita una hipotética migración de aplicaciones. Curiosamente una tabla .wpd es ligeramente más pequeña. Por supuesto compress=yes no es problema y WPS nos permite comprimir tablas.

Acercamiento a WPS. Migrando desde SAS

Poco a poco comienzo a trabajar con el clónico de SAS WPS. Estoy trabajando con la versión 2.3.5. De momento las impresiones no pueden ser mejores. El interfaz me recuerda a Enterprise Guide, trabajamos con proyectos que pueden estar compuestos de scripts (códigos de SAS) o ficheros. En cuanto al interfaz tenemos un navegador de proyectos para explorar los elementos que añadimos. Acompaña a este explorador una ventana de propiedades del proyecto. En la parte central podemos ver los scripts o los ficheros que añadimos. Me ha gustado el poder linkar los ficheros añadidos al proyecto a la aplicación del sistema asociada al fichero, me explico, si añades una hoja de cálculo ésta se abre en el proyecto de WPS con el programa asociado a ella. Otra de las ventanas está organizada en pestañas, una de ellas dispone del log y los resultados, otra un «server explorer» similar al explorador de SAS Base y una pestaña de progreso. Por último disponemos de otro navegador de procedimientos, resultados o log de ejecuciones al que particularmente no le encuentro mucho interés.

Uso de CASE en PROC SQL

Vamos a estudiar como funciona CASE en un PROC SQL. Son palabras que aparecen en las búsquedas de Google y también he observado que el número de visitas al blog ha descendido en los últimos días y no sólo es debido a las vacaciones navideñas. El 60% de los clicks a AyD vienen por temas de SAS y en los últimos días tengo muy olvidados los mensajes de esta categoría. Además en el plazo de 2 días voy a dejar de trabajar con esta herramienta por lo que, es posible, que se reduzcan aun más. En fin, a lo que voy, CASE en el PROC SQL. Case nos permite crear campos condicionales dentro del bloque SELECT de una query de PROC SQL:

Felicitación navideña con SAS

Ejecutad el siguiente código en SAS local:

```data null;`

/*
LA 440
SI 494
DO 523
RE 587
MI 659
FA 698
SOL 784
LA 880
*/

call sound(659,100);
call sound(659,100);
call sound(659,200);
call sound(659,100);
call sound(659,100);
call sound(659,200);

call sound(659,100);
call sound(784,100);
call sound(523,100);
call sound(587,100);
call sound(659,400);

call sound(698,100);
call sound(698,100);
call sound(698,150);
call sound(698,50);

call sound(698,100);
call sound(698,100);
call sound(659,100);
call sound(659,50);
call sound(659,50);

call sound(659,100);
call sound(587,100);
call sound(587,100);
call sound(659,100);