Как найти переменные без наблюдений в большом наборе данных? - PullRequest
2 голосов
/ 16 июня 2011

У меня есть набор данных SAS с более чем 1300 переменными. Есть около 200-300 переменных, которые вообще не имеют наблюдений. Есть ли способ получить список этих переменных, которые не имеют наблюдений, чтобы я мог удалить эти переменные из набора данных?

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Если они числовые, вы можете сделать это:

proc means data=sashelp.class n nmiss;
  var _numeric_;  
run;

Приветствие Rob

0 голосов
/ 16 июня 2011

Насколько я знаю, вам нужно сканировать весь набор данных.

Примерно так должно работать (предупреждение: не проверено и может содержать опечатки, так как у меня нет установки SAS под рукой).

%macro drop_unused(libname=,memname=);

proc sql noprint;
  select trim(put(count(1), 8. -L)) into :count_vars from sashelp.vcolumn
    where libname eq "%upcase(&libname)" and memname eq "%upcase(&memname)";
  select trim(left(name)) into :var_1-:var_&count_vars from sashelp.vcolumn
    where libname eq "%upcase(&libname)" and memname eq "%upcase(&memname)";
quit;

data _null_;
  length __missing $ 32767;
  set &libname..&memname end=lastrec;
%do i=1 %to &count_vars;
  retain __missing_&i 'y';
  if not missing(&&var_&i) then __missing_&i = 'n';
%end;
  if lastrec then do;
%do i=1 %to &count_vars;
    if __missing_&i eq 'y' then __missing = trim(left(__missing)) || ' ' || "&&vars_&i";
%end;
    call symput('missing', trim(left(__missing)));
  end;
run;

data new_data;
  set &libname..&memname (drop=&missing);
run;

%mend;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...