Monográficos. CALL SYMPUT imprescindible

He detectado que muchas búsquedas que llegan a Análisis y Decisión vienen por la palabra clave CALL SYMPUT. Por este motivo, me he decidido a escribir este rápido monográfico sobre esta instrucción. Con un par de ejemplos podemos familiarizarnos con su funcionamiento. CALL SYMPUT es una rutina de SAS que nos permite crear macrovariables durante la ejecución de un paso DATA; digamos que es un mecanismo que comunica el compilador del lenguaje macro de SAS con el propio lenguaje SAS. El ejemplo prototípico de su uso: determinar el número de observaciones de un dataset que cumplen determinada condición: ...

16 de febrero de 2009 · rvaquerizo

Trucos SAS. Lista de datasets en macrovariable

Un uso frecuente del PROC SQL es la generación de macrovariables. En este ejemplo, vamos a crear una macrovariable con el nombre de los datasets de una librería SAS que contengan un determinado patrón. También es un ejemplo bastante práctico del uso de las vistas de SASHELP. Para entender mejor el truco, vamos a generar 20 ficheros ficticios con variables aleatorias en el directorio C:\temp: libname temp "C:\temp"; * GENERAMOS 20 DATASETS ALEATORIOS; %macro tablas_aleatorias; %do i = 1 %to 20; data temp.aleat&i.; do j = 1 to 100; persona = ranpoi(8, 23); importe1 = int(rand("uniform") * 1000); importe2 = int(rand("uniform") * 1000); tae = ranpoi(34, 2) + round(rand("uniform"), .1); output; end; drop j; run; %end; %mend tablas_aleatorias; %tablas_aleatorias; Esta macro hace un bucle y genera 20 datasets. A continuación, necesitamos crear un dataset que sea la concatenación de los 20 generados anteriormente. Podríamos poner los 20 nombres a mano, pero esto no es elegante. Para automatizar esto debemos hacer lo siguiente: ...

5 de febrero de 2009 · rvaquerizo

Si buscamos sexo no buscamos trabajo

«Internáuticamente» hablando, cuando buscamos sexo no buscamos trabajo; no lo digo yo, lo dice Google Trends. Observemos qué ocurre si comparamos las búsquedas de la palabra “sexo” frente a “trabajo”: Es más que evidente la alta correlación negativa entre las búsquedas de sexo y las búsquedas de trabajo. En 2009 se espera un baby boom. En 2009 todos estaremos buscando trabajo. ¿Una incongruencia? Por cierto, se busca mucho más sexo que trabajo. ...

27 de enero de 2009 · rvaquerizo

Macros SAS. Asignar permisos en Unix

Hoy os presento una macro especialmente útil para aquellos que trabajéis con SAS en arquitecturas UNIX. En ocasiones, generamos tablas SAS que han de ser modificadas por otros usuarios y éstos no disponen de los permisos adecuados para modificarlas. La siguiente macro lo que hace es un «change mode», un chmod que modifica los permisos de las tablas SAS de una librería. Por defecto, la macro hace un chmod 777, lo que significa que owner, group y others tienen permiso de lectura, escritura y ejecución. Si pusiéramos chmod 766, significaría que el owner tiene todos los permisos y el group y others permiso de lectura y escritura. chmod 744 significaría que el owner tiene todos los permisos y group y others únicamente permiso de lectura. ...

13 de enero de 2009 · rvaquerizo

Transformar variables en SAS. Carácter a numérico

Muchas visitas a este sitio son búsquedas de Google que plantean la problemática que surge al transformar variables carácter a numéricas y viceversa con SAS. Las palabras habituales son “transformar texto a número SAS”, “cómo paso de variable string a numérica en SAS”, “pasar de carácter a fecha en SAS”, “SAS transformar fecha numérica en texto”… son todas búsquedas que han generado mucho tiempo de estancia en el sitio, a pesar de que no existía un mensaje específico. En el siguiente monográfico vamos a tratar estas conversiones. De esta forma, se crearán una serie de dos posts que pueden ser un interesante material de consulta para profesionales y estudiantes que trabajen con SAS. ...

3 de diciembre de 2008 · rvaquerizo

Macros SAS. Hacer 0 los valores missing de un dataset

La siguiente macro de SAS nos permite transformar los valores perdidos (missing) en valor 0 para todas las variables de un dataset. Para todas, para todas las numéricas. Esto es muy importante porque en ocasiones es necesario distinguir el valor 0 del valor missing (.). Pero puede ser muy práctica si vamos a emplear procedimientos que han de distinguir valores perdidos o, simplemente, si deseamos que nuestra tabla tenga otro aspecto. ...

27 de noviembre de 2008 · rvaquerizo

Truco Excel. Nuestra propia función redondear en Excel

Hay operaciones que pueden ser muy habituales de hacer con Excel y para las que necesitaríamos una función propia que las realizara. A continuación, vamos a plantear una situación en la que es especialmente útil crear una función específica y guardarla en el libro de macros personal para utilizarla en nuestras sesiones. En este caso concreto, vamos a crear una función que nos redondee un número a 0 o 0,5; es decir, 6,3 valdría 6 y 6,7 valdría 6,5. Para realizarlo sin una función específica emplearíamos múltiples funciones de Excel, por ejemplo: ...

21 de noviembre de 2008 · rvaquerizo

Manual. Curso introducción de R. Capítulo 11: Introducción al análisis de la varianza (ANOVA)

Para realizar la introducción al análisis de la varianza (ANOVA) con R comenzaremos estableciendo unos conceptos básicos. Lo primero que hacemos es plantear una hipótesis que va a motivar un experimento, elegimos el diseño para nuestro experimento y recogemos los datos y los analizamos mediante el análisis de la varianza que consiste en descomponer la variabilidad total de los datos en sumandos cada uno de ellos asignable a una fuente de variación; posteriormente ya sacamos conclusiones. Lo que se expone a continuación viene recogido en los libros: ...

3 de octubre de 2008 · rvaquerizo

Trucos SAS. Operar con fechas YYYYMM típicas de particiones Oracle

Este truco va orientado a programadores SAS que estén habituados a trabajar con Oracle. El SAS Tip de hoy nos permite parametrizar a la perfección la lectura de tablas históricas particionadas. En estos casos, podemos crear parámetros con macrovariables de SAS para leer las tablas Oracle sin necesidad de modificar manualmente las fechas de partición. Un ejemplo Sin parametrizar: proc sql; create table maximo as select idcliente, max(importe) as importe_semestral from ora.tabla where f_particion in (200801, 200806, 200812); quit; Parametrizado: proc sql; create table maximo as select idcliente, max(importe) as importe_semestral from ora.tabla where f_particion in (&mes_menos_6., &mes., &mes_mas_6.); quit; Con este ejemplo queda claro nuestro objetivo. En el siguiente paso DATA veremos las funciones que vamos a emplear para trabajar con fechas de partición AAAAMM (las más habituales): ...

1 de octubre de 2008 · rvaquerizo

Truco SAS. Transformaciones de variables con arrays

Hacer ceros los missing en un dataset. Crear una etiqueta "NO DISPONIBLE" en campos carácter sin valores. Cuando trabajamos con SAS, es una situación más que habitual. A continuación voy a plantear un par de ejemplos de cómo podemos usar array de variables en SAS para realizar una transformación “masiva” de variables de nuestro conjunto de datos. Poner missing numéricos a 0 Lo primero es destacar que no siempre un valor perdido equivale a 0. Cuando realizamos modelos, es necesario tener en cuenta qué hacemos con los missing; el siguiente ejemplo transforma todos los . de un dataset a 0: ...

18 de septiembre de 2008 · rvaquerizo