Monográfico. `FIRST.` y `LAST.` ejemplos en DATA

Ya trabajamos en un monográfico anterior con datos agrupados en SAS. Cuando empleamos BY tenemos dos variables dentro del paso data con las que trabajaremos habitualmente: FIRST. y LAST.. A continuación vamos a plantear un ejemplo de uso para entender mejor su funcionamiento. Partimos de una simulación de una cartera de una CIA aseguradora que tiene 1.000 pólizas y está a nivel de póliza, renovación y suplemento. Para la realización de diversos análisis necesitamos marcar las pólizas de nueva producción, marcar la anualidad, determinar la prima en el momento anterior a la renovación y la prima que tienen a día de hoy. ...

2 de diciembre de 2009 · rvaquerizo

Funciones de ventana, SAS y bases de datos

Hace unos meses padecí (eso sí, brevemente) un proyecto que consistía en la migración de cierto código en SAS (¡nos lo pasaron como un documento de 20 hojas de Word!) a otro lenguaje de programación. Esencialmente, desde la nueva plataforma habrían de lanzarse consultas a cierta base de datos (cuando el código SAS permitiese resolver los cálculos como una consulta de SQL) y procesarse los resultados procedimentalmente desde el nuevo lenguaje de programación cuando SQL, declarativo, no fuese suficiente. Surgió el problema de que el lenguaje procedimental era incapaz de procesar bloques tan grandes de información. Pero ésa es otra historia. ...

22 de noviembre de 2009 · cgbellosta

Nuevo entorno para la gestión de la información

Carlos ya nos habló del clon de SAS WPS, también ha hecho referencia al compilador de SAS en Java, y le estoy dando vueltas al tema. Por si fuera poco, leo esto en DecisionStats. ¿Cuánto dinero puede ahorrar una organización dependiente de SAS si monta un entorno en WPS (el compilador me pone menos)? ¿Es buen momento para crear una consultora que ayude a optimizar gastos en gestión de información? Cuestiones muy interesantes a las que tengo que dar respuesta en breve. Pero que soy capaz de hacer que una entidad bancaria se ahorre 30.000 €/año, de eso estoy seguro; y tengo que evaluar cuánto costaría, pero creo que en el primer año saldría rentable el nuevo entorno.

19 de noviembre de 2009 · rvaquerizo

Traducir código SAS a Java

Hacía tiempo que no escribía en este blog, pero creo que la noticia bien amerita un hiato en mi contumaz incuria. Días ha, escribí sobre WPS, un clon de SAS. Ahora he descubierto que también es posible ejecutar SAS sin SAS. Un producto de la empresa Dulles Research permite compilar código SAS en Java. Podría abundar en corolarios, pero me parecen de lo más evidentes. Así que finalizaré mi tan noticiosa como breve intervención saludando a un fiel lector mío por ver si, esta vez, se queda con la copla.

14 de noviembre de 2009 · cgbellosta

Trucos SAS. Autonumérico con PROC SQL

Rápido: me ha llegado una consulta que me preguntaba cómo crear un campo autonumérico con PROC SQL. Tenemos que emplear la función MONOTONIC(): data uno; do i = 1 to 100; output; end; run; proc sql; create table dos as select monotonic() as obs, a.* from uno a where mod(i, 2) = 0; quit; Equivale al _N_ de un paso DATA. Es una tontería, pero a un lector del blog le ha venido bien. Saludos.

6 de noviembre de 2009 · rvaquerizo

Laboratorio de código SAS. Comparativa entre IF y WHERE

Inicio hoy otra serie de mensajes para analizar el uso óptimo del código SAS. La intención es comparar distintas ejecuciones y obtener un pequeño reporte con la metodología y el tiempo empleado en su ejecución. Para evitar el efecto que pueda causar la concurrencia en un servidor con SAS, se realizarán múltiples ejecuciones. He intentado que el código que utilizo para comparar las ejecuciones sea lo más sencillo posible. Soy consciente de que se puede usar un código más “profesional”, pero lo que planteo a continuación me parece una solución equilibrada. La idea es hacer una macro que haga $N$ ejecuciones para promediar el efecto de la concurrencia. Cada método tendrá una ejecución controlada con una macrovariable con la hora del sistema. Esta información se guardará en una tabla SAS junto con el nombre del método. Al final, lo más sencillo es ordenar por el tiempo de ejecución e imprimir el resultado. ...

3 de noviembre de 2009 · rvaquerizo

Trucos SAS. Identificar registros duplicados

Muy rápido: para identificar registros duplicados existen múltiples formas. Seguramente haré un monográfico sobre este tema, pero de momento dejo una píldora: data aleatorio; do i = 1 to 100000; id = ranpoi(23456, 56781); if ranuni(5) >= 0.3 then output; end; run; proc sql; create table repes (where=(rep > 1)) as select id, count(id) as rep from aleatorio group by id; quit; proc sql; create table no_repes (where=(rep = 1)) as select id, count(id) as rep from aleatorio group by id; quit; Contamos registros y empleamos WHERE como opción de escritura. Muy fácil y perfectamente entendible. No puedo entretenerme más, que mi hija me reclama…

29 de octubre de 2009 · rvaquerizo

Macros SAS. Calcular la longitud de un número.

Ha llegado hoy una búsqueda que no ha permanecido en AyD ni 20 segundos. Quería calcular la longitud de un número con SAS. Como yo estoy aquí para compartir mis conocimientos y hay una persona que los necesita aquí está esta macro que espero o sea de utilidad: %macro largo(num); length(compress(put(&num.,32.))) %mend; Esta macro recibe un parámetro que ha de ser un número y lo que hace es transformarlo a carácter comprimido y calcular su longitud. Veamos ejemplos de uso: ...

27 de octubre de 2009 · rvaquerizo

Lista de los lengajes de programación mas populares

Hacía mucho tiempo que no me daba una vuelta por TIOBE para conocer los lenguajes de programación más populares. Este estudio se realiza mensualmente y la verdad es que he encontrado pocos cambios con respecto a 2008. De los lenguajes que se tratan en este blog tenemos en el puesto 15 a SAS y en el puesto 30 a R. Vemos pocas cosas de Visual Basic y hemos rozado el PL/SQL. Debería empezar a trabajar con MATLAB y Python. ...

26 de septiembre de 2009 · rvaquerizo

SAS no se vende

Entrevista a Goodnight en Bloomberg Viene a decir que no quiere escuchar ofertas porque SAS no está en venta. Me imagino que en realidad las ofertas no serán muy atractivas, pero al final vendrá SAP y… Si no, cómo va a luchar contra IBM y SPSS.

7 de septiembre de 2009 · rvaquerizo