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. Número de variables de un dataset en una macro

Una macro que nos permite saber el número de variables que tiene un conjunto de datos SAS. Es una petición de una lectora y la macro es análoga a otra que ya pusimos en el blog allá por 2010. Veamos cómo funciona: %macro numvars(datos); %global numvars; /*ABRIMOS EL CONJUNTO DE DATOS PARA VER SUS CARACTERISTICAS*/ %let datosid = %sysfunc(open(&datos)); /*SI ESTA ABIERTO ENTONCES LA FUNCION ATTRN NOS DA EL NUMERO DE VARIABLES*/ %if &datosid %then %do; %let numvars =%sysfunc(attrn(&datosid,nvars)); /*CERRAMOS EL CONJUNTO DE DATOS*/ %let rc = %sysfunc(close(&datosid));%end; %mend; data ejemplo; a=1; b=2; c=3; d=4; f=5; g=6; run; %numvars(ejemplo); %put _user_; Utilizamos las funciones I/O de SAS, en concreto ATTRN que unido a NVARS nos permite saber el número de variables que tiene un dataset, el número de variables lo ponemos en la macrovariable global &numvars.. ...

22 de enero de 2016 · 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

Tipos de merge con SAS o WPS

Una chuleta con los tipos de merge que se pueden hacer en un paso data con SAS: Para aquellos que empiezan a trabajar con SAS será de mucha utilidad. Un saludo.

23 de diciembre de 2014 · rvaquerizo

Dividir en palabras un texto con SAS

Una duda que planteó una lectora del blog acerca de separar una cadena de caracteres separados por comas y crear observaciones en otra variable: Hola! he buscado por toda la página, necesito ayuda urgente. Mi problema es el siguiente. Necesito separar una cadena de texto en una fila en varias filas, por ejemplo cadena1,cadena2,cadena3 en cadena1 cadena2 cadena3 para encontrar la , utilizo scan, aunque podría ocupar anypunct para que encuentre la primera , luego la segunda , etc y cortar con substr, longth … pero bueno, ya que tengo un metodo de separar el texto de la fila como hago para que cada palabra este en una nueva fila? ojala me hayan entendido y me den una idea de como hacer eso en un proc sql, con una macro o como sea, solo una pequeña orientación me serviria mucho, gracias!!!!! ...

12 de septiembre de 2013 · rvaquerizo

Atentos a los intervalos de confianza

Un intervalo de confianza es la zona en la que me fío de lo que estimo. Cuanto más amplia es esa zona menos me fío de lo que estimo y cuanto más estrecha más me fío de lo que estimo. Lo que pasa es que un intervalo de confianza por definición empieza con la famosa expresión “dada una población de media nu y desviación típica sigma…” ¡¡¡FU FU FU FU FU FU!!! ...

26 de julio de 2013 · rvaquerizo

SAS vs WPS. Diferencias de precio

Minequest tiene una actualización de los costes en software si se utiliza SAS o se utiliza WPS. Como vemos es sustancialmente más económico emplear WPS. Y si hablamos de instalación en cliente/servidor la diferencia se incrementa. En breve hablaré de las posibilidades estadísticas que ofrece WPS. De todos modos http://www.teamwpc.co.uk/products/wps y veréis los nuevos procedimientos que tiene la V3.

17 de mayo de 2013 · rvaquerizo

Analisis cluster con SAS. La importancia de las semillas en las k-medias

El PROC FASTCLUS en SAS nos permite realizar análisis de agrupamiento dirigido mediante el algoritmo de las k-medias. Este algoritmo tiene algunos problemas pero nos puede servir para agrupar de forma multivariante observaciones. Es rápido, sencillo de explicar y con algunas lagunas no funciona mal. Como aproximación a nuestras segmentaciones puede ser muy práctico. Hoy se va a utilizar para identificar a los clientes más complicados de segmentar, a aquellas observaciones que quedan en las zonas grises. (http://www.datanalytics.com/blog/2011/08/03/clustering-iii-sobresimplificacion/) Estas zonas grises en muchos casos son más importantes que la segmentación en sí. Si estamos con un problema de taxonomía (clasificar especies) puede ser menos importante, pero si clasificamos inversiones, clientes,… ¿qué pasa con aquellos que no sabemos ubicar? Escribimos segmentar en un buscador y tenemos esta imagen: ...

15 de abril de 2013 · rvaquerizo

Trucos SAS. Lista de variables missing

Duda que me plantearon ayer por la tarde. Dada una serie de variables determinar que registro tiene todas esas variables nulas. El truco que planteo puede servir para determinar incluso cuantos valores perdidos tiene esa lista de variables, ese truco me le reservo para otro día. El código lo acompaño con un ejemplo para que se pueda ejecutar y analizar su funcionamiento: data aleatorio; do i=1 to 20000; aleat1=sqrt(rannor(45)); aleat2=sqrt(rannor(5)); aleat3=sqrt(rannor(4)); aleat4=sqrt(rannor(450)); aleat5=sqrt(rannor(40)); output; end; run; ```sas data fila_nula; set aleatorio; nulo=0; array varib(*) aleat1--aleat5; do j=1 to dim(varib); if not missing(varib(j)) then nulo=i; end; drop j; if nulo=0; run; Muy sencillo el truco. Si se encuentra alguna variable que no es nula la variable nulo ya no toma valor 0. Espero que os sea de utilidad. Saludos.

8 de marzo de 2013 · rvaquerizo

Truco SAS. Ver el contenido de un formato

Para ver los valores que toma un formato con SAS tenemos que emplear el PROC FORMAT. La sintaxis es muy sencilla: proc format library = work.formats fmtlib; select &formato. run; Tenéis que poner el nombre del formato sin punto. Sintaxis sencilla, pero difícil de recordar (por lo menos a mi me ha pasado). Saludos.

6 de febrero de 2013 · rvaquerizo