天天看點

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函數

從上述結果可以看到缺失值個數統計跟實際缺失值個數保持一緻。