我一直认为数据步骤的每次迭代都将变量设置为缺失。然而,在下面的代码中,变量看起来像是保留了最开始获取的值。我不明白为什么会发生这种情况?
data one;
input x $ y;
datalines;
a 10
a 13
a 14
b 9
;
run;
data two;
input z;
datalines;
45
;
run;
data test;
if _n_ = 1 then set two; /* when _n_=2 the PDV assigns missing values, right ? */
set one;
run;
proc print;
run;
结果是
z x y
45 a 10
45 a 13
45 a 14
45 b 9
我本来期待得到这个
z x y
45 a 10
. a 13
. a 14
. b 9
SAS 确实not重置 PDV 中 SET、MERGE、MODIFY 或 UPDATE 语句的值。由于您使用的是 SET 语句,因此 SAS 不会重置它。
if _n_ = 1 then set two;
http://support.sas.com/documentation/cdl/en/lrcon/65287/HTML/default/viewer.htm#p08a4x7h9mkwqvn16jg3xqwfxful.htm http://support.sas.com/documentation/cdl/en/lrcon/65287/HTML/default/viewer.htm#p08a4x7h9mkwqvn16jg3xqwfxful.htm
Read - 执行阶段-
指针5
http://support.sas.com/documentation/cdl/en/basess/58133/HTML/default/viewer.htm#a001290590.htm http://support.sas.com/documentation/cdl/en/basess/58133/HTML/default/viewer.htm#a001290590.htm
http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000961108.htm http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000961108.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)