2017-03-14 118 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。

相关问题