如果datastep中的语句检查缺失值

时间:2016-09-12 12:08:22

标签: sas

好奇的是这段代码:

data Bla.SomeGreatNewDataset;
    set WORK.InputTempDataset;
    by SomeColumnName;
    if first.SomeColumnName then output;
    else delete;
run;

与:

相同
data Bla.SomeGreatNewDataset;
    set WORK.InputTempDataset;
    by SomeColumnName;
    if not missing(first.SomeColumnName) then output;
    else delete;
run;

换句话说:

if first.SomeColumnName

只检查SomeColumnName是否包含缺失值?

1 个答案:

答案 0 :(得分:1)

简短回答,不。

使用first.varlast.var的BY组处理对变量的不同值进行操作。缺失值是有效的缺失值。

first.varlast.var是布尔值,为1或0.您的代码只输出SomeColumnName的每个唯一值的第一条记录。

注意,数据需要按SomeColumnName排序,或者在该列上有索引。

以下是一个例子:

data have;
input x;
datalines;
1
2
2
.
3
3
3
;
run;

proc sort data=have;
by x;
run;

data want;
set have;
by x;
if first.x;
run;

proc print data=want;
run;

产地:

                                         Obs    x

                                          1     .
                                          2     1
                                          3     2
                                          4     3