SAS Пропущенные значения - PullRequest
0 голосов
/ 24 ноября 2018

Я работаю над SAS Dataset, в котором отсутствуют значения .
Я могу определить, есть ли в конкретной переменной пропущенные значения, используя оператор IS NULL/IS MISSING.
Есть ли альтернативный способ,с помощью которого я могу определить, какие переменные имеют пропущенные значения в одном кадре.

Заранее спасибо

Ответы [ 4 ]

0 голосов
/ 27 ноября 2018

Можно предложить два варианта (в дополнение к предложению Питера Слезака): - Использовать средства proc с помощью nmiss

proc means data = ___ n nmiss;
var _numeric_;
run;
  • В SAS Enterprise Guide есть задача определения данных - это помогает профилироватьсимвольные переменные тоже.(Под капотом это комбинация различных процедур, но это простой в использовании вариант).

Надеюсь, это поможет, с уважением, Sundaresh

0 голосов
/ 24 ноября 2018

Синтаксис IS NULL или IS MISSING ограничен для использования в коде SQL (также в WHERE операторах или WHERE= опциях набора данных, поскольку они по существу используют один и тот же синтаксический анализатор.)

Чтобы проверить,значение отсутствует, вы также можете использовать функцию MISSING().Или сравните это с отсутствующим значением.Итак, для символьных переменных проверьте, равен ли он всем пробелам: c=' '.Для числового значения вы можете проверить x=., но вам также нужно обратить внимание на специальные пропущенные значения.Таким образом, вы можете проверить, если x <= .z.

Чтобы получить быструю сводку числа различных пропущенных значений для каждой переменной, вы можете использовать опцию NLEVEL в PROC FREQ.Обратите внимание, что он может не работать для большого набора данных со слишком большим количеством различных значений, так как процедуре не хватит памяти.

0 голосов
/ 26 ноября 2018

Вы можете использовать команду proc freq table с отсутствующей опцией.Включает отсутствующую категорию, если пропущенные значения существуют.Полезно для категориальных данных.

data example;
      input A Freq;
      datalines;
   1 2
   2 2
   . 2
   ;

*list variables in tables statement;
proc freq data=example;
    tables A / missing;
run;

Вы также можете использовать Proc Univariate, он создает таблицу MissingValues ​​в ODS по умолчанию, если существуют какие-либо пропущенные значения.Полезно для числовых данных.

0 голосов
/ 24 ноября 2018

использовать массив и vname, чтобы найти переменную с пропущенными значениями.Если вы хотите строки с пропущенными значениями, используйте функцию cmiss.

data have;
  infile datalines missover;
  input id num char $ var $;
datalines;
1 . A C
2 3   D
5 6 B D
;



 /* gives variables with missing values*/

data want1(keep=miss);
set have;
array chars(*) _character_;
array nums(*) _numeric_;

do i=1 to dim(chars);

    if chars(i)=' ' then
        miss=vname(chars(i));

    if nums(i)=. then
        miss=vname(nums(i));
end;

if miss=' ' then
    delete;
run;

  /* gives rows with missing value*/

data want(drop=rows);
set have;
rows=cmiss(of id -- var);

if rows=1;
 run;
...