Удалить переменные с нулевыми значениями из набора данных SAS - PullRequest
0 голосов
/ 21 сентября 2019

Я часто работаю с большим количеством переменных, которые имеют только нулевые или пустые значения, но я не смог найти команду 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;

1 Ответ

0 голосов
/ 21 сентября 2019
  1. Используйте STACKODS и ODS SUMMARY, чтобы получить таблицу в формате, необходимом за один шаг, а не за несколько шагов.Это ограничивает его суммой, так как если сумма = 0, все значения равны 0. Вы также можете посмотреть округление, чтобы избежать проблем с числовой точностью.

PROC MEANS + PROC TRANSPOSE перейти к:

ods select none;
proc means data= &x. stackods sum;
var _numeric_;
ods output summary = sumT;
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...