If-then-else 如何在 SAS 中工作



从PSU学习sas教程时。https://online.stat.psu.edu/stat480/lesson/welcome-stat-480.

我遇到了这些句子:

请注意,通常,将 ELSE 语句与 IF-THEN 语句一起使用可以节省资源:

使用不带 ELSE 语句的 IF-THEN 语句会导致 SAS 计算所有 IF-THEN 语句。 将 IF-THEN 语句与 ELSE 语句一起使用会导致 SAS 执行 IF-THEN 语句,直到遇到第一个 true 语句。不计算后续的 IF-THEN 语句。

有人可以用一个例子来解释我的上述课程。谢谢。

考虑一系列放置在连续IF/THEN语句中的互斥逻辑计算。

length word $10;
word='Infinity';
if x=1 then word='One;
if x=2 then word='Two';
if x=3 then word='Three';
if x=4 then word='Four';
if x=5 then word='Five';

只有一个评估是正确的,但需要对所有五个评估。 通过将单独的语句与ELSE链接,您将创建一个将很快完成的大型语句 单个IF测试的计算结果为 true。

在这里,我将ELSE放在行的开头以示强调。

if x=1 then word='One;
else if x=2 then word='Two';
else if x=3 then word='Three';
else if x=4 then word='Four';
else if x=5 then word='Five';
else word='Infinity';

考虑x3的情况,不需要执行x=4x=5的测试。这是您的资源节省。

这意味着在我的代码翻译水果颜色的第一个版本中,计算机将首先测试黄色水果是否为红色,然后是黄色,然后是绿色,然后是蓝色

data DUTCH_FRUIT;
set ENGLISH_FRUIT;
if color eq 'red' 
then kleur = 'rood';
if color eq 'yellow' 
then kleur = 'geel';
if color eq 'green' 
then kleur = 'groen';
if color eq 'blue' 
then kleur = 'blauw';
run;

而在第二个中,它只会测试它是红色然后是黄色,但永远不会测试它是绿色还是蓝色,哪个更有效

data DUTCH_FRUIT;
set ENGLISH_FRUIT;
if color eq 'red' 
then kleur = 'rood';
else if color eq 'yellow' 
then kleur = 'geel';
else if color eq 'green' 
then kleur = 'groen';
else if color eq 'blue' 
then kleur = 'blauw';
run;

最新更新