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;
我有一个条件遵循这个逻辑 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;