Я часто работаю с большим количеством переменных, которые имеют только нулевые или пустые значения, но я не смог найти команду SAS для удаления этих нежелательных переменных.Я знаю, что мы можем использовать SAS / IML, но я сталкивался с такими случаями много раз и хотел бы иметь макрос, который может помочь мне без необходимости вводить имена переменных, чтобы избежать ошибок.Вот мой код для удаления переменных только с нулевыми значениями.Он работает для создания очищенного набора выходных данных y из набора необработанных данных x без использования имен переменных.Я надеюсь, что другие могли бы найти лучшее решение или помочь мне улучшить мое.
%Macro dropZeroV(x, y) ;
proc means data = &x. ;
var _numeric_;
output out = sumTab ; run;
proc transpose data = sumTab(drop = _TYPE_) out= sumt; var _Numeric_; id _STAT_; run;
%let Vlst =;
proc sql noprint;
select _NAME_ into : dropLst separated by ' '
from sumT
where Max=0 and Min =0;
data &y.;
set &x.; drop &dropLst.;
run;
proc print data = &y.; run;
%Mend dropZeroV;