Con esta macro podréis identificar el número de observaciones de UN CONJUNTO DE DATOS SAS. No funciona con tablas Oracle, Informix, DB2,… me gustaría dejarlo claro. Al emplear la función de I/O OPEN junto con ATTRN y CLOSE no realizamos un conteo de observaciones. Al final el proceso crea una macro variable que se llama NOBS y que podremos usar en nuestra sesión SAS.
%macro observaciones(datos);
/*EL NUMERO DE OBS LO VAMOS A METER EN UNA MV GLOBAL*/
%global nobs;
/*ABRIMOS EL CONJUNTO DE DATOS PARA VER SUS CARACTERISTICAS*/
%let datosid = %sysfunc(open(&datos));
/*SI ESTA ABIERTO ENTONCES LA FUNCION ATTRN NOS DA LA NOBS*/
%if &datosid %then %do;
%let nobs =%sysfunc(attrn(&datosid,NOBS));
/*CERRAMOS EL CONJUNTO DE DATOS*/
%let rc = %sysfunc(close(&datosid));%end;
%mend ;
Fácil y rápida. Si alguien tiene problemas con su uso que lo comunique en el blog. Seguro que es de gran utilidad. Saludos.
Macros (fáciles) de SAS. Número de obsevaciones de un dataset
24
Nov
A tu programa «fácil» le falta un put alfinal.
Para poder comprobar que funciona.
Gracias.
Hola,
Sabeis si existe algo como los cursores de SQL en SAS?
Quiero recorrer los distintos elementos de una tabla (columna de tipo char), y para cada elemento actualizar otros campos dependiendo del valor.
Claro que si, explora la opción Into:
Pingback: Macro SAS. Número de observaciones de un dataset en una macro | Análisis y Decisión
Como siempre señor vaquerizo , sacándome de aprietos
muchas gracias