2016-05-19 15 views
-4

この論理Av(B^C)に続く条件は、(AvB)^(AvC)と等価です。sas論理演算子が期待通りに機能しない

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"; 
+2

は、あなたはそれが間違った結果を生成例を挙げてもらえますか?そして、おそらく全体のコードを投稿しますか?これをいくつかのサンプル値で再現しようとしましたが、いつも私のために働いていました... – kl78

+0

また、あなたの最終行にはcount_no * n * int、他にはcount_nointがあります。あなたの投稿のタイプミス? – kl78

+0

(AvB)^(AvC)not(AvB)^(BvC)。 – Joe

答えて

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; 
関連する問題