好奇的是这段代码:
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是否包含缺失值?
答案 0 :(得分:1)
简短回答,不。
使用first.var
和last.var
的BY组处理对变量的不同值进行操作。缺失值是有效的缺失值。
first.var
和last.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