2016-04-08 51 views
0

任何人都可以教我如何更有效地重写以下命令。基本上,如果满足某些条件,我想执行多个操作。如何使用SAS高效执行多个操作如果

data a; 
set a; 
if var1 > 5 then var2 = 5; 
if var1 > 5 then var3 = 5; 
if var1 > 5 then var4 = var1; 
run; 

我知道我可以将它改写为以下内容。但有没有更有效的方法来做到这一点。

Data a; 
set a; 
if var> 5 then do; 
var2 = 5; var3= 5; var4 = var1; 
end; 
run; 
+0

请详细说明你的意思是有效的。计算明智的你的第二个解决方案已经相当有效。 – Jetzler

+0

使用做结束,程序有点长,看起来有点杂乱。所以我认为我们是否可以用一句话写出这些多重命令? – fly36

+0

您可以生成重复使用的函数或宏。除此之外,我没有看到do组更加压缩的版本。 – Jetzler

回答

0

我会感到惊讶,如果它做任何可测量的性能差异,但如果你只有条件一个代码块,你真的很讨厌分号这么多,你可以使用return,而不是do-end块:

Data a; 
set a; 
if var <= 5 then return; 
var2 = 5; var3= 5; var4 = var1; 
run; 

当SAS达到return声明,它跳过你的逻辑的其余部分数据跳跃的当前迭代,输出那里,然后(除非你用一个明确的output声明某处......),和(在这个简单的场景中)直接进入下一个迭代数据步骤。

但是,一般来说,这种方法与goto相同,不应在任何情况下使用。

相关问题