我一直认为,对于数据步骤的每次迭代,变量都设置为缺失.但是,在下面的代码中,它看起来像变量在最开始时保留的值.我不明白为什么会这样?
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;
Run Code Online (Sandbox Code Playgroud)
结果是
z x y
45 a 10
45 a 13
45 a 14
45 b 9
Run Code Online (Sandbox Code Playgroud)
我期待得到这个
z x y
45 a 10
. a 13
. a 14
. b 9
Run Code Online (Sandbox Code Playgroud)
SAS 不会重置PDV 中 SET、MERGE、MODIFY 或 UPDATE 语句的值。由于您使用的是 SET 语句,因此 SAS 不会重置它。
if _n_ = 1 then set two;
Run Code Online (Sandbox Code Playgroud)
读取 -执行阶段- 指针 5
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