Macro SAS. Variables de un dataset en una macro variable

Hoy os presento una macro de SAS que nos permite recoger en una macro variable las variables de un conjunto de datos SAS. Tiene como particularidad que nos sirve para seleccionar aquellas variables que tienen un determinado patrón, del tipo consumo2010, consumo2011,… Es un código un poco más complejo de lo habitual pero tiene aspectos interesantes: options mlogic mprint; %macro lista_variables (ds= , nombre_mv= , patron=); *ES NECESARIO QUE LA MACROV FINAL SEA GLOBAL; %global &nombre_mv.; *PUEDE SER QUE LA LIBRERIA SEA WORK O PERMANENTE; data _null_; length lib tab $255.; if index("&ds.",".")=0 then lib="WORK"; else lib=scan("&ds.",1,".") ; put lib=; call symput('libreria',lib); tab=scan("&ds.",2,".") ; call symput('tabla',tab); run; *BUSCAMOS EN DICTIONARY DE SAS; proc sql noprint; select compress(name) into:&nombre_mv. separated by " " from sashelp.vcolumn where libname=upcase("&libreria.") and memname=upcase("&tabla.") and /*PODEMOS APLICAR UN PATRON*/ upcase(name) like '%'||"%upcase(&patron.)"||'%'; quit; %mend; El elemento principal de esta macro es una consulta a una de las tablas DICTIONARY de SAS. O mejor dicho, a una de las vistas que tenemos en SASHELP. Siempre he prefererido consultar las vistas de SASHELP. La vista consultada es VCOLUMN de donde extraemos la columna NAME y como condicionantes pasamos la librería en LIBNAME y el nombre de la tabla de la que deseamos obtener las variables en MEMNAME. Como particularidad podemos aplicar patrones. ...

6 de septiembre de 2012 · rvaquerizo

Univariantes de campos de nuestra BBDD con kettle

El kettle no sólo puede servirnos para subir y bajar tablas a nuestra BBDD. También puede ayudarnos a describir las tablas de nuestras BBDD de una forma muy sencilla. El paso Univariate Statistics será nuestro aliado para esta sencilla tarea. Lo primero que tenemos que hacer es crear una conexión a nuestra BBDD. Hace tiempo ya hablamos de esta labor con Postgres. Una vez creada la conexión comprobamos su correcto funcionamiento y el primer paso será una Entrada Tabla donde seleccionaremos la tabla que deseamos describir: ...

12 de septiembre de 2011 · rvaquerizo

Lecciones de economía de un ignorante. La prima de riesgo (y la madre que la parió)

El término prima de riesgo está todo el día y a todas horas en los informativos españoles. La bolsa baja porque la prima de riesgo sube, ahora baja, ahora estamos por encima de Italia, luego por debajo, los franceses asustados,… En fin «los mercados» nos tienen asustados porque están locos, algunos llaman a esto volatilidad que suena más técnico. Y los menos puestos os preguntaréis ¿que es la prima de riesgo? Pues aquí estoy yo para transmitir mi ignorancia. Me centro en la zona Euro. ...

7 de agosto de 2011 · rvaquerizo

El modelo multivariante en el sector asegurador. Los modelos por coberturas (V)

Debido a la pobre aceptación había dado de lado esta serie de monográficos sobre la tarifa multivariante en el sector asegurador. Pero tengo una lectora que si los seguía y como yo me debo a mis lectores continúo con la serie. Recapitulemos. Como variables dependientes tenemos la frecuencia siniestral y el coste medio de los siniestros, las variables independientes serán aquellas que compongan la estructura de nuestra tarifa, como prototipo para determinar que variables forman parte de nuestro modelo empleamos el multitarificador de ARPEM. Con este planteamiento partimos de dos modelos: el modelo de frecuencias y elmodelo de costes medios. Sin embargo a la hora de ajustar es muy importante plantear un modelo para cada una de las garantías. Parece lógico que el modelo multivariante para el contenido en una tarifa de hogar no ha de ser el mismo que el modelo para el continente. O centrándonos en el modelo de autos (sobre el que está girando nuestra serie) es necesario modelizar los siniestros de responsabilidad civil por un lado, los siniestros de daños propios por otro, defensa, robo,… ...

27 de diciembre de 2010 · rvaquerizo

Las cuentas claras.

Si hay alguna tarea o procedimiento indispensable y más repetitivo hasta la saciedad por excelencia a la hora de trabajar con bases de datos y tener que reportar alguna información por mínima que sea, esta es contar o contabilizar el número de casos (registros) que tenemos en total o en subtotales (por grupos) dentro de una tabla (los llamados datasets en SAS). Para dar mayor utilidad a este ‘tutorial’ sobre conteo, partiré de una tabla con 2 columnas (campos) tipo cadena, es decir tipo texto, de manera que podamos ver diferentes métodos para contar-contabilizar NO solo campos tipo texto sino también trucos que nos den una solución más ‘elegante’ de la combinación de ambos campos tipo cadena. Estos 2 campos se llamarán grupo y tipo, muy empleados por muchos programadores, pero se podrían llamar tambien familia y familia_segmento o bien comunidad_1 y comunidad_2 o bien zona_tipo1 y zona_tipo2 o bien entorno_primario y entorno_secundario, o si el ejercicio tratase de contar el número de alumnos por sexo y color_ojos bastaría con sexo y color_ojos, etc etc. ...

22 de mayo de 2010 · danifernandez

Monográfico. Análisis de Factores con R (una introducción)

El análisis de factores es una técnica de reducción de datos: menor dimensión mayor portentaje de varianza. Distinguimos el análisis factorial exploratorio del análisis factorial confirmatorio en función del conocimiento del número de factores a obtener. Este análisis está muy relacionado con el análisis de componentes principales pero no buscamos explicar el mayor porcentaje de varianza a partir de combinaciones lineales de variables, buscamos conjuntos de variables comunes entre si. Este análisis supone que hay un factor intrínseco a las variables a combinar. El proceso a seguir para este tipo de análisis sería: ...

11 de febrero de 2010 · rvaquerizo

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 catera 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

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 que se puede usar un código más «profesional» o un código más «sencillo» pero lo que planteo a continuación me parece la mejor solución. La idea es hacer una macro que haga N ejecuciones para evitar el efecto concurrencia. Cada método tendrá una ejecución, esta ejecución se controlará con una macrovariable con la hora del sistema. Esta mv se guardará en una tabla SAS junto con un nombre que le damos al método y la ejecución realizada. Al final lo más sencillo es ordenar por el tiempo de ejecución e imprimir el resultado. ...

3 de noviembre de 2009 · rvaquerizo

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 macro variables durante la ejecución de un paso data, digamos que es un mecanismo que comunica el compilador del macro lenguaje 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

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 caracter a numéricas y viceversa con SAS. Las palabras habituales son transformar texto a número SAS, como paso de variable string a numerica en sas, pasar de caracter a fecha en SAS, sas transformar fecha numerica en texto, son todas búsquedas que han generado mucho tiempo de estancia en el sitio a pesar de que no existe un mensaje específico. En el siguiente monográfico vamos a tratar estas conversiones. De esta forma se crearán una serie de dos post que pueden ser un interesante material de consulta para profesionales y estudiantes que trabajen con SAS. ...

3 de diciembre de 2008 · rvaquerizo