2017-03-14 47 views
0

我對SAS非常陌生。我已經編寫了代碼來在SAS中執行一些數據操作。面臨的挑戰是每次在執行這段代碼之前,我都必須手動更改數據集的名稱。這花了很多時間。命名約定中有一些模式。 假設我的數據集名稱是XXX_IN_MUM_Dec_2016。因此,在執行之前,我將名稱更改爲XXX_IN_MUM_Jan_2017想要根據SAS中的varibale創建一些數據集

示例代碼:

data XXX_IN_MUM_Dec_2016; 
set XXX_IN_MUM_Dec_2016; 
FILENAME_MONTH=input(CATS(strip("01"),SCAN(strip(filename_BILL),4,"_")),anydtdte.); 
format FILENAME_MONTH monyy7.; 
if intnx('month','1SEP2016'd,0,'b'). <= FILENAME_MONTH <= intnx('month','1FEB2017'd,0,'e') then output; 
run; 

在上面的代碼中,我想傳遞一個變量,而不是數據集名稱(XXX_IN_MUM_Jan_2017)。

感謝 莫哈末沙姆斯

+0

您是否還想更改'IF'語句中使用的日期範圍? – Tom

+0

是的......在大多數情況下, –

+0

因此請更新問題以反映您真正需要的內容。你有什麼約會價值?今天的日期?還有別的嗎?你需要把它轉換成什麼日期?您需要使用什麼格式轉換爲與文件/數據集命名方式相匹配的日期? – Tom

回答

0

每次啓動SAS會話系統將自動創建宏變量SYSDATE時間。它顯示兩位數的日期,月份名稱的前三個字母和一個兩位數的年份。因此,您可以使用它:

%let month = %substr(&sysdate, 3, 3); 
%let year = %substr(&sysdate, 6, 2); 
%put &month &year; 

data XXX_IN_MUM_&month._20&year; 
    set XXX_IN_MUM_&month._20&year; 
    /* your code*/ 
run; 

今天數據集名稱解析爲XXX_IN_MUM_mar_2017。

相關問題