天天看点

SAS中的cmiss函数

在使用cmiss函数求行缺失个数时,需要注意的一个地方:

data a;

    v1=.;v2='';x=3;output;

    v1=1;v2='a';x=2;output;

    v1=3;v2='';x=.;output;

    v1=.;v2='b';x=2;output;

run;

data b;

set a;

sum_miss=cmiss(of _all_);

当我们使用sum_miss=cmiss(of _all_)时,会发现缺失值的个数比实际缺失值个数要多一个:

SAS中的cmiss函数

如果改使用sum_miss=cmiss(of v1--x)时:

sum_miss=cmiss(of v1--x);

结果发现缺失值个数跟实际缺失值个数保持一致:

SAS中的cmiss函数

从结果我们可以看到用_all_时,比v1--x多了一个变量的缺失值,为了查明原因,我们采用put语句进行调试:

put _all_;

结果如下所示:

SAS中的cmiss函数

因此可以看到多出的那个变量缺失值是sum_miss,因此为了避免这种情况出现,我们可以用retain语句给sum_miss初始化:

retain sum_miss 0;

SAS中的cmiss函数

从上述结果可以看到缺失值个数统计跟实际缺失值个数保持一致。