2016-12-07 67 views
0

我有一個名爲monthlypayments數據集,它位於我已經指派「培訓」文件夾中,它具有可變付款。SAS 9.4宏eval函數發出

我要輸出的支付類型「,這是「高支付」如果支付> 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

我剛剛通過這個腳本來解決,即時通訊仍然只是學習宏的基礎知識。所以我應該只有一個If語句的Eval函數? – PropK

回答

4

如果你想使基於數據的變量值的數據的一個子集,那麼你需要使用正常的SAS代碼,而不是宏觀邏輯語句。如果看起來像你的宏變量只是告訴你在IF語句中使用哪個數據步驟變量。

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

啊!完善。我明白 – PropK