用于检查 SAS 中带或不带 MACROS 的多个条件的循环



我是 SAS 的新手,在 do 循环中阅读 SAS if 语句,我仍然对如何解决循环问题感到困惑。我也不知道在这里使用宏。

代码被赋予 belòow:

if DIA_PRINCd=001
or DIA_UNOd  =001
or DIA_DUEd  =001
or DIA_TREd  =001
or DIA_QUATTROd=001
or DIA_CINQUEd =001
or DIA_PRINCd=002
or DIA_UNOd  =002
or DIA_DUEd  =002
or DIA_TREd  =002
or DIA_QUATTROd=002
or DIA_CINQUEd=002
--------------------
---------------------
or DIA_PRINCd=142
or DIA_UNOd=142
or DIA_DUEd=142
or DIA_TREd=142
or DIA_QUATTROd=142
or DIA_CINQUEd=142
;

跑;

我可以知道如何在 SAS 中使用循环来解决此问题吗?

看起来正在测试同一组变量以用于各种诊断代码,例如001002、...142作为子集if的标准。

or运算符意味着,如果单个子句为真,则应出现该子集。

您可以为DIA_*创建一个变量数组,并循环要测试的代码。 在循环中,WHICHN函数调用会告诉您数组中的任何变量是否与代码匹配。 如果诊断值实际上是字符类型"001",请使用WHICHC

例:

array diagnoses dia_:;
found = 0;
do code = 001, 002, ..., 142;                 /* list of codes to check */
found = whichn(code, of diagnoses(*));      /* check if present */  
if found then leave;                        /* stop checking at earliest find */
end;
if found;    /* subsetting if.  At least one of the variables matched one of the codes */

WHICHNWHICHC函数隐式循环传递给它的值(即来自of array-name(*)中变量的值)

最新更新