sas 逻辑运算符未按预期运行

sas logical operators not functioning as expected

我有一个条件遵循这个逻辑 Av(B^C) 相当于 (AvB) ^ (AvC)。

其中:

A = NAF> 2  
B= (COUNT_INT + COUNT_NOINT < 25)  
C= (NAF> 1)

这是规范中给出的条件:

NAF> 2   OR  (( COUNT_INT + COUNT_NOINT < 25) AND (NAF> 1))  

这就是我在 sas 中编码的方式,但它没有产生正确的结果。我感谢任何建议。谢谢

实际上这是我编写数组时失败的地方:

if (sum(count_int_arr[i],count_nonint_arr[i]) lt 25 )  and 
   ( naf_arr[i] gt 2)  or  (naf_arr[i] gt 1) then check_naf_arr[i] = "bad";

您的编码方式与您在初始规范中提供的方式不同。您的代码等效于 (A AND B) OR C,而您想要 A OR (B AND C)

这应该会给您正确的结果:

DATA myData;

  /* (...) */

  DO i = 1 TO someValue;
    IF (naf_arr[i] > 2) OR (SUM(count_int_arr[i], count_nonint_arr[i]) < 25 AND naf_arr[i] > 1)
        THEN check_naf_arr[i] = "bad";
  END;

  /* (...) */

run;