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

时间:2016-05-19 12:18:47

标签: sas conditional logical-operators

我的条件遵循此逻辑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";

1 个答案:

答案 0 :(得分:1)

您编码的方式不是您在初始规格中给出的。您的代码等同于(A AND B) OR C,而您需要A OR (B AND C)

Logical table

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

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;