在SAS中使用else

时间:2018-12-06 23:34:30

标签: if-statement sas

我正在尝试使用AGE创建2个新变量(AGEGRP和AGEGRP2)。 AGE变量包含我想划分为范围的数字年龄。

这是我的代码:

pod try

这将产生以下内容:

pod try

我怀疑(<= __ <)之间的语句有问题。如何获得正确的AGEGRP2范围?

2 个答案:

答案 0 :(得分:2)

如果不包括所有ELSE,则最后一个else子句将覆盖早期IF语句的结果。如果...然后...;否则...然后...; ELSE ...;

在使用变量之前,请确保先定义变量。否则,SAS将猜测如何根据首次使用它们来定义它们。在您的示例中,AGEGRP的长度为$ 3,AGEGRP2的长度为$ 2。

在开始进行IF级联之前添加此行。

length AGEGRP AGEGRP2 $11;

答案 1 :(得分:1)

您的问题是IF / ELSE IF。您尚未将它们正确地链接在一起。

if (AGE < 18) then AGEGRP = '<18'; * Codes less than 18;

*codes 18 to 65;
if (18 <= AGE < 65) then AGEGRP = '>=18 to <65'; 

*anything else (including < 18) is recoded;
else if (AGE >= 65) then AGEGRP = '>=65';

这应该对您有用。

if (AGE < 18) then AGEGRP = '<18'; * Codes less than 18;

*codes 18 to 65;
else if (18 <= AGE < 65) then AGEGRP = '>=18 to <65'; 

*anything else (including < 18) is recoded;
else if (AGE >= 65) then AGEGRP = '>=65';