2016-12-07 8 views
0

私はmonthlypaymentsというデータセットを持っています。これは私が 'training'を割り当てたフォルダにあり、可変支払いを持っています。SAS 9.4マクロ評価関数の問題

「高額支払い」である「支払タイプ」を出力したい場合は、支払い> 400で、それ以外の場合は「低額支払い」です。

私はこのエラー

を得続ける

ERROR: DS-00075 : Parsing error occurred while trying to %EVAL an expression: Invalid syntax found in call to %EVAL**

誰かが私が間違ってやっているものを私に伝えることができますか?

%LET root=D:\Users\Data; 
libname training "&root."; 

%LET dataset=training.monthlypayments; 
%LET outlib=out; 
%LET outfile=monthlypaymentsclassified; 
%LET variable=payment; 

%IF %EVAL(&VARIABLE.>400) %THEN %DO; 
data &outlib..&outfile.; 
     set &dataset.; 
     paymenttype="high payment"; 
     run; 
%ELSE %DO; 
data &outlib..&outfile.; 
     set &dataset.; 
     paymenttype="low payment"; 
     run; 
%END; 
+0

あなたの問題記述がIF文またはWHERE文で何かを記述したときに、なぜあなたは '%IF'文を書いたのですか? – Tom

+0

私はちょうどマクロの基本を学んで、このスクリプトを修正しました。だから私はちょうどEval関数のIf文を持っているはずですか? – PropK

答えて

4

あなたがデータ内の変数の値に基づいてデータのサブセットを作りたいなら、あなたは、通常のSASコードではなく、マクロのロジックステートメントを使用する必要があります。マクロ変数のように見える場合は、IFステートメントで使用するデータステップ変数がわかります。

data &outlib..&outfile.; 
    set &dataset.; 
    if &variable > 400 then paymenttype="high payment"; 
    else paymenttype="low payment"; 
run; 
+0

ああ!完璧。わかりました – PropK