【发布时间】:2016-04-13 10:00:24
【问题描述】:
问题
要对 SAS 中的最后一个 观察 做某事,可以设置一个 end -flag,例如
data myResult;
merge myInput1 (in=in1) myInput2 (in=in2) end=last;
by myKey;
** Do some stuff **;
if last then ** Do special stuff **;
run;
但是我如何对只有一个输入到最后做出反应?
myInput1 (in=in1 end=end1) 不起作用。
上下文
我想比较两个大型数据集的内容,因此限制为 999 个观察值。如果myInput1 在中间包含一些额外的观察结果,我的程序会报告这一点,但还有来自myInput2 的一些行被myInput1 中的obs=999 子句排除。我其实很想写:
data diff_&memName.;
format problem $20.;
merge myInput1(in=in1 end=end1 obs=999)
myInput2(in=in2 end=end2 obs=999)
by moederartikelnr;
select;
when (end1 or end2) delete;
when (not inFrom) problem = "only in 1_PROD";
when (not inTo) problem = "only in 2_DVLP";
when (not first.moederartikelnr or not last.moederartikelnr)
problem = 'duplicate key';
otherwise delete;
end;
run;
如果您能以其他方式帮助我,请也这样做。
【问题讨论】: