Truco SAS. Tablas de una librería en una `macro variable`

Me plantean una duda, como crear un conjunto de datos con las tablas de una librería en SAS y posteriormente generar una macro variable con ellos, esta es una entrada análoga a otra del blog pero sirve para recordar como funciona el ODS de SAS y el PROC DATASETS un procedimiento que no he usado habitualmente. Lo primero que vamos a hacer es observar que resultados arroja el PROC DATASETS en su sintaxis más sencilla, ver los contenidos de una librería: ...

24 de enero de 2017 · rvaquerizo

Macro SAS. Crear variables dummy desde una variable categórica

En alguna ocasión ya he conjugado el verbo dumificar y preparando una segmentación he creado una macro SAS que genera variables dummy a partir de variables categóricas, es decir, si la variable A toma valores 1, 2 y 3 tendría que generar A_1 con valor 1 si A toma 1 y con valor 0 en caso contrario, A_2 tiene valor 1 si A es igual a 2 y A_3 tiene valor 1 si A es igual a 3, no es complicado de comprender, pasamos de una variable con 3 niveles a 3 variables con valores 0 o 1. Para esto podemos emplear arrays o la siguiente macro: ...

2 de diciembre de 2015 · rvaquerizo

Mínimo de una matriz de datos en SAS

El otro día una lectora del blog me preguntaba como obtener el mínimo de una matriz de datos de 100×1000 con SAS. El ejercicio es muy práctico para ayudar a que se entienda mejor como “piensa” SAS. Probablemente esta lectora estaba pensando en complicados bucles que recorren, que almacenan, que arrastran,… con SAS las cosas no son así. El paso data es un bucle en si mismo y SAS no tiene pereza en crear tablas intermedias. Así que la mejor solución para encontrar ese mínimo sería: ...

27 de abril de 2015 · rvaquerizo

Trucos SAS. Calcular percentiles como Excel o R

Alguna vez habréis calculado un percentil en Excel o en R y os saldrá distinto de SAS. Esto se debe a que los métodos de cálculo son distintos tanto R como Excel utilizan el mismo método consistente en una interpolación en función de la distancia entre los registros que dan la posición del percentil. SAS dispone de 5 métodos distintos para calcular el percentil y por defecto emplea el número 5 y ninguno de los 4 métodos restantes es el que utilizan R o Excel. Pero podemos programar el método de un modo sencillo, cuesta más entender porque no lo implementa SAS que calcularlo. A continuación tenéis una sencilla macro que calcula el percentil con el método de Excel: ...

16 de febrero de 2015 · rvaquerizo

Determinar el mímino tamaño muestral para detectar un cambio en la fracción no conforme

Este año he aprendido algo sobre metodología 6 sigma para el control de la calidad, me gustó mucho lo que aprendí. Para la realización de algunos ejercicios cree libros Excel y algún proceso SAS. Hoy quería traeros al blog una macro de SAS que nos permite determinar el tamaño mínimo muestral para detectar un cambio en la fracción no conforme con una determinada probabilidad. El programa es un bucle de SAS que crea los límites de control para la fracción no conforme y estandariza la diferencia del límite superior con la nueva fracción no conforme. Se calcula la probabilidad que deja este dato estandarizado y el paso del bucle será el número mínimo de muestras. Es más sencillo el código que la definición: ...

18 de diciembre de 2014 · rvaquerizo

Un nuevo blog sobre SAS en español

Buenas noticias. Tenemos un nuevo blog sobre SAS en español: Utilidades, recursos, ejemplos y documentación sobre la herramienta de B.I. SAS. Esta buena iniciativa parte de Juan Vidal. Se agradece que la comunidad de programadores de SAS compartan sus conocimientos. Algo que no es muy habitual, al contrario pasa con otras herramientas para la gestión de la información y la estadística. Por supuesto esta iniciativa tiene su correspondiente link en esta web. ...

1 de mayo de 2014 · rvaquerizo

Espacios en SAS

Las funciones SAS más habituales para eliminar blancos son las que tenéis en la figura de arriba. Para llegar a ese conjunto de datos SAS hemos ejecutado el siguiente paso data: ```sas data ejemplo; st = " Cuando brilla el sol "; l_st=length(st); output; funcion="COMPRESS "; st1 = compress(st); l_st1=length(st1); output; funcion="COMPBL"; st1 = compbl(st); l_st1=length(st1); output; funcion="TRIM"; st1 = trim(st); l_st1=length(st1); output; funcion="TRIMN"; st1 = trimn(st); l_st1=length(st1); output; funcion="STRIP"; st1 = strip(st); l_st1=length(st1); output; funcion="SRTIP+COMBBL"; st1 = strip(compbl(st)); l_st1=length(st1); output; run; Distintas formas de eliminar espacios dentro de una cadena de caracteres en SAS. Partimos de la variable string » Cuando brilla el sol » y empleamos las siguientes funciones: ...

14 de enero de 2014 · rvaquerizo

Truco (muy fácil) de SAS. Leer un rango de una hoja Excel

Cuando tenemos rangos en nuestras hojas Excel y deseamos que se conviertan en tabla SAS podemos emplear la sentencia libname de este modo: ```sas libname selec "C:\TEMP\rangos.xlsx"; data rango; set selec.rango; run; libname selec clear; Asisgnamos la librería al archivo Excel que deseamos leer y tan simple como referenciar al rango en nuestro paso data. Se interactúa fácil entre Excel y SAS. Saludos.

10 de octubre de 2013 · rvaquerizo

Truco SAS. Retrasar una ejecución con SLEEP

El método más sencillo para ejecutar SAS a una hora determinada es el empleo de la función SLEEP: data _null_; momento = "03OCT2013:10:07"dt; duerme_hasta = sleep(momento - datetime(), 1); run; Un truco muy sencillo que da respuesta a una duda planteada en el blog. Pensé que ya existía esta entrada. Saludos.

3 de octubre de 2013 · rvaquerizo

Truco SAS. Elminar retornos de carro o saltos de línea engorrosos

Cuando tenemos saltos de línea o retornos de carro que nos dificultan las lecturas de ficheros de texto podemos leer caracter a caracter con SAS y elminar esos caracteres incómodos. data _null_; length char 1.; infile 'C:\fichero_de_entrada.TXT' lrecl=1 recfm=F missover dsd; file 'C:\fichero_de_entrada_depurado.TXT' lrecl=1 recfm=F; input charASCII.; if rank(char) = 13 /*SI ES WIN PONER EL 13*/ then char= ""; put char; run; Recomiendo no sobreescribir el fichero de texto y crear otro «depurado». Tendréis este problema cuando vuestro programa SAS os lea menos observaciones de las esperadas. Esto suele pasar cuando trabajamos con archivos de distintos sistemas operativos, como por ejemplo cuando leemos un archivo de texto unix con una máquina windows. Saludo.

30 de septiembre de 2013 · rvaquerizo