SAS tip sencillo para el uso de las funciones de Input Output de SAS y que puede ahorrarnos más de un paso data. Se trata de una macro que pone el número de observaciones de un dataset en una macrovariable global. Al emplear funciones de I/O su ejecución es inmediata:
*MACRO PARA IDENTIFICAR EL NUMERO DE OBSERVACIONES DE UN DS; %macro numobs(ds,mv); *CREAMOS UNA MACRO VARIABLE GLOBAL; %global &mv.; data _null_; *ABRIMOS EL FICHERO; datossid=open("&ds."); *OBTENEMOS EL ATRIBUTO NOBS QUE CONTIENE EL NÚMERO DE OBSERVACIONES; no=attrn(datossid,'nobs'); *ASIGNAMOS EL VALOR A LA MV; call symput ("&mv.",compress(no)); *CERRAMOS EL FICHERO; datossid=close(datossid); run; %mend; *EJEMPLO DE USO; data uno; do i=1 to 100; output; end; run; %numobs(uno,obs_uno); %put Observaciones de uno =&obs_uno.;
Como vemos es un código sencillo pero muy práctico ya que nos permite obtener el número de observaciones de forma instantánea. Con él podemos validar procesos, realizar cálculos,…
Como siempre para cualquier duda o cuestión rvaquerizo@analisisydecision.es
Hola,
Duda sobre como nombras la variable que indica el num de obs :obs_uno, pues lo que no sé es como cambiar el nombre del fichero o dejarla simplemente obs .
En %numobs(conjunto_datos,variable) ahí puedes cambiar tanto el dataset como la macro variable resultante.