我有4个txt文件,需要加载到SAS,并将它们保存为4个sas文件。以下是文本文件的外观: cle20130805.txt、cle20130812.txt、cle20130819.txt和cle20130826.txt。我在% Macro下使用了% Do循环,以便只使用宏的一个调用获得导入的4个文件。这是我的密码:
%macro cle;
%do i=20130805 %to 20130826 %by 7;
Data cleaug.cle&i;
infile "home/abc/cle&i..txt" dlm= '|' dsd firstobs=1 obs=100;
input a_no b_no c_no;
run;
%end;
%mend cle;
%cle我希望保存4个sas文件,只需调用marco一次。然而,它无法成功地运行。我在代码中做错了什么?
谢谢,
发布于 2013-12-04 22:11:15
我不建议您尝试编写一个宏来导入所有四个文件。要么它是一个你只使用过一次的特定宏--在这种情况下,您可以手工编写它并节省您已经花费的时间--或者它将是您每一个月都必须修改的东西,或者是您使用它的任何东西。
相反,让宏精确地执行一个文件,但包含容易调用它所需的信息。在这种情况下,听起来您需要一个参数:日期,所以20130805或诸如此类。然后给它一个合理的名字,真正说明它所做的事情。
%macro import_files(date=);
Data cleaug.cle&date.;
infile "home/abc/cle&date..txt" dlm= '|' dsd firstobs=1 obs=100;
input a_no b_no c_no;
run;
%mend import_files;现在你管它叫:
%import_files(date=20130805)
%import_files(date=20130812)
%import_files(date=20130819)
%import_files(date=20130826)就像上面写的宏一样简单,甚至硬编码这四个日期。如果日期在某种程度上是可预测的,您也可以非常容易地生成宏调用(例如,如果有超过4个)。您可以在目录中列出文件所在的位置,或者使用call EXECUTE从数据步骤调用宏(如果您真的喜欢循环的话)。
https://stackoverflow.com/questions/20386869
复制相似问题