且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SAS中的cmiss函数

更新时间:2022-03-28 02:29:48

在使用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_);
run;
当我们使用sum_miss=cmiss(of _all_)时,会发现缺失值的个数比实际缺失值个数要多一个:
SAS中的cmiss函数
如果改使用sum_miss=cmiss(of v1--x)时:
data b;
set a;
sum_miss=cmiss(of v1--x);
run;
结果发现缺失值个数跟实际缺失值个数保持一致:
SAS中的cmiss函数

从结果我们可以看到用_all_时,比v1--x多了一个变量的缺失值,为了查明原因,我们采用put语句进行调试:
data b;
set a;
put _all_;
sum_miss=cmiss(of _all_);
run;
结果如下所示:
 SAS中的cmiss函数
因此可以看到多出的那个变量缺失值是sum_miss,因此为了避免这种情况出现,我们可以用retain语句给sum_miss初始化:
data b;
set a;
retain sum_miss 0;
sum_miss=cmiss(of _all_);
run;
结果如下所示:
SAS中的cmiss函数
从上述结果可以看到缺失值个数统计跟实际缺失值个数保持一致。