SAS缺少价值调查结果

时间:2018-11-24 17:47:42

标签: sas

我正在研究一个{strong>缺少值的SAS Dataset
我可以使用IS NULL/IS MISSING运算符来确定特定变量是否缺少值。
是否有其他方法可以用来识别一次中哪些变量缺少值。

预先感谢

4 个答案:

答案 0 :(得分:2)

语法IS NULLIS MISSING仅限于在SQL代码中使用(在WHERE语句或WHERE=数据集选项中也是如此,因为它们本质上使用相同的解析器。)< / p>

要测试是否缺少值,您还可以使用MISSING()函数。或将其与缺失值进行比较。因此,对于字符变量,请测试其是否等于所有空格:c=' '。对于数字,您可以测试x=.,但还需要注意特殊的缺失值。因此,您可以测试是否x <= .z

要快速了解每个变量的不同缺失值的数量,可以使用PROC FREQ上的NLEVEL选项。请注意,它可能不适用于具有太多不同值的大型数据集,因为该过程将耗尽内存。

答案 1 :(得分:1)

使用数组和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;

答案 2 :(得分:1)

您可以在缺少选项的情况下使用proc freq表语句。如果存在缺失值,则它包括缺失类别。对于分类数据很有用。

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,如果存在任何缺失值,则默认情况下会在ODS中创建MissingValues表。对于数字数据很有用。

答案 3 :(得分:1)

我可以建议的两个选项(除了PeterSlezák的以外)是: -使用proc手段和nmiss

proc means data = ___ n nmiss;
var _numeric_;
run;
  • 在SAS Enterprise Guide中,有一个特征数据任务-这也有助于分析字符变量。 (在后台,它是各种proc的组合,但是是易于使用的选项)。

希望这会有所帮助, 问候, 桑达莱什