在基本数据步骤中,我正在创建一个新变量,我需要根据这个新变量过滤数据集。
data want;
set have;
newVariable = 'aaa';
*lots of computations that change newVariable ;
*if xxx then newVariable = 'bbb';
*if yyy AND not zzz then newVariable = 'ccc';
*etc.;
where newVariable ne 'aaa';
run;
错误:变量newVariable不在文件WORK.have。
我通常分两步完成,但我想知道是否有更好的方法。
(当然你总是可以根据where statement
中的变量来编写一个复杂的WORK.have
。但是在这种情况下,newVariable
的计算过于复杂,而且效率更高第二个data step
)
我找不到任何关于此的信息,如果答案在文档中并且我没有找到,我为这个愚蠢的问题道歉。如果需要,我会删除这个问题。
谢谢!
答案 0 :(得分:1)
使用子集if
语句:
if newVariable ne 'aaa';
通常,if <condition>;
相当于if not(<condition>) then delete;
。 delete
语句告诉SAS放弃数据步骤的这个迭代,然后返回到下一次迭代的开始。除非您在子集化output
语句之前使用了明确的if
语句,否则将阻止输出行。