0
我使用SAS基地V9.4問題LAG功能(SAS)
我有我的每個客戶的日均餘額,我想看看他們是否增加或減少其資產從一天到另一個。所以我寫了下面的代碼,但我收到以下錯誤。 「
」錯誤72-185:LAG函數調用的參數太多。「
IF LAG(CUST_ID,1)=CUST_ID AND (BALANCE - LAG(BALANCE,1))>0 THEN FLAG="FLAG=1"
可能是什麼問題呢?
我使用SAS基地V9.4問題LAG功能(SAS)
我有我的每個客戶的日均餘額,我想看看他們是否增加或減少其資產從一天到另一個。所以我寫了下面的代碼,但我收到以下錯誤。 「
」錯誤72-185:LAG函數調用的參數太多。「
IF LAG(CUST_ID,1)=CUST_ID AND (BALANCE - LAG(BALANCE,1))>0 THEN FLAG="FLAG=1"
可能是什麼問題呢?
延遲的深度是函數名稱的一部分,而不是參數。所以你需要LAG1(BALANCE)
而不是LAG(BALANCE,1)
。 LAG1()
可以縮短爲LAG()
。如果您想處理您的數據BY客戶,請添加一條BY語句。這將創建FIRST.
和LAST.
變量。如果您只需要差異而不是實際的先前值,則還應該查看DIF()
系列函數。
data want ;
set have ;
by cust_id;
if dif(balance) > 0 and not first.cust_id then flag='FLAG=1' ;
由cust_id和日期確定訂單 – vasja
嘗試使用LAG1(CUST_ID),而不是滯後(CUST_ID,1),同爲平衡 – stat
您也可以使用'DIF'函數,而不是'LAG'計算當前和以前的值之間的差(即'DIF(BALANCE)> 0')。你的'IF'語句應該可以在這裏正常工作,但要小心使用'IF'和'LAG'。 「干擾素」通常是一個更好的選擇,因爲[這裏]解釋的原因(http://www.howles.com/saspapers/CC33.pdf) – Longfish
完全避免滯後並使用「保留」。 –