Como obtener un PROC MEANS solo con variables con datos

Publicar nuevo tema   Responder al tema

Ver el tema anterior Ver el tema siguiente Ir abajo

Como obtener un PROC MEANS solo con variables con datos

Mensaje por fedeursi el Lun Abr 06, 2009 8:14 pm

Hola, tengo un problema que no sé cómo resolver. Tengo una tabla con 400 variables, de las cuales 350 no contienen datos (todos missing) y sólo 50 contienen datos. Quiero correr un PROC MEANS y que sólo analice las 50 variables con datos.
¿Cómo se hace? No sirve enumerar las variables con datos. Tengo que buscar una forma en la que el programa detecte las variables con datos y a esas les corra el PROC MEANS.
Gracias por la ayuda!
Federico.

fedeursi
Jedi Youngling
Jedi Youngling

Cantidad de envíos: 2
Fecha de inscripción: 06/04/2009

Ver perfil de usuario

Volver arriba Ir abajo

Re: Como obtener un PROC MEANS solo con variables con datos

Mensaje por Altons el Mar Abr 07, 2009 10:48 am

Hola Federico, aqui tienes una forma de resolver tu problema.

Código:

/*
1) Vamos a crear un dummy data set llamado file400 con
400 variables, 350 de las cuales no contienen
datos.
*/
data file400;
attrib vars1-vars400 format=best.;
array variables {*} vars351-vars400;
do i=1 to 100;
do j=1 to dim(variables);
variables{j}=ranuni(0)*100;
end;
output;
end;
drop i j;
run;
/*
2) Utilizando la tabla dictionary.columns
guardamos en una macro variable todas las
columnas/variables de File400
*/
Proc SQL noprint;
Select name into :mycolumns separated by " "
from dictionary.columns
where libname='WORK' and memname='FILE400';quit;
%put &mycolumns; /*en el log encontraras la lista de variables*/
/*
3) Usando ODS output guardemos la informacion de todas las
variables que no contienen datos en el data set Mvalues.
Aqui debes ser muy cuidadoso
ya que si tienes algun missing en alguna de las otras 50 variables,
estas seran contabilizadas aqui.
*/
ods output Missingvalues=mvalues;
ods listing close;
proc univariate data=file400 ;
var &mycolumns;
run;
ods listing;
/*
4) Ahora seleccionas todas las columnas de File400 que no esten
contenidas en Mvalues, asi solo estaras seleccionando aquellas
que no contengan missing values.
*/
Proc SQL noprint;
Select name into :myvars separated by " "
from dictionary.columns
where libname='WORK' and memname='FILE400'
and name not in (select varname from mvalues);quit;
%put &myvars;
/*Proc means con solo las variables que necesitas*/
proc means data=file400;
var &myvars;
run;


SASludos,

Alberto

Altons
Admin
Admin

Cantidad de envíos: 3
Localización: Chester
Fecha de inscripción: 12/03/2009

Ver perfil de usuario http://www.lasug.org

Volver arriba Ir abajo

Re: Como obtener un PROC MEANS solo con variables con datos

Mensaje por fedeursi el Mar Abr 07, 2009 1:14 pm

Muchas gracias Alberto!
Saludos,
Federico.

fedeursi
Jedi Youngling
Jedi Youngling

Cantidad de envíos: 2
Fecha de inscripción: 06/04/2009

Ver perfil de usuario

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Publicar nuevo tema   Responder al tema
Permiso de este foro:
No puedes responder a temas en este foro.