2017-06-26 85 views
1

我正在創建一個SAS程序,允許用戶輸入他們想要調查的日期(作爲全局變量)。我想在用戶創建變量前三個月創建第二個變量。創建SAS變量之間的關係

%let var1 = [user manually writes the variable in the code] 
%let var2 = [3 months before var1] 

我試圖

var2 = intnx('month', input(put(&var1.,8.),yymmdd8.),-3) 

不工作。

+1

您似乎在代碼中混合了宏變量和實際數據集變量。您需要告訴用戶他們應該使用什麼格式將日期輸入到第一個宏變量中,該變量將與用於生成第二個宏變量的方法兼容。請記住,SAS宏變量只是文本字符串。 – Tom

回答

2

假設您想要使用並創建格式爲YYYYMMDD的日期字符串的宏變量,那麼您可以使用%SYSFUNC()來完成此操作。

%let date1=20170213 ; 
%let date2=%sysfunc(intnx(month,%sysfunc(inputn(&date1,yymmdd8)),-3),yymmddn8); 
%put &=date1 &=date2; 


DATE1=20170213 DATE2=20161101 
+0

這起作用。謝謝! –