首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SAS宏导入具有顺序名称的多个txt文件

使用SAS宏导入具有顺序名称的多个txt文件
EN

Stack Overflow用户
提问于 2013-12-04 21:55:30
回答 1查看 4.3K关注 0票数 2

我有4个txt文件,需要加载到SAS,并将它们保存为4个sas文件。以下是文本文件的外观: cle20130805.txt、cle20130812.txt、cle20130819.txt和cle20130826.txt。我在% Macro下使用了% Do循环,以便只使用宏的一个调用获得导入的4个文件。这是我的密码:

代码语言:javascript
复制
%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一次。然而,它无法成功地运行。我在代码中做错了什么?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-04 22:11:15

我不建议您尝试编写一个宏来导入所有四个文件。要么它是一个你只使用过一次的特定宏--在这种情况下,您可以手工编写它并节省您已经花费的时间--或者它将是您每一个月都必须修改的东西,或者是您使用它的任何东西。

相反,让宏精确地执行一个文件,但包含容易调用它所需的信息。在这种情况下,听起来您需要一个参数:日期,所以20130805或诸如此类。然后给它一个合理的名字,真正说明它所做的事情。

代码语言:javascript
复制
%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;

现在你管它叫:

代码语言:javascript
复制
%import_files(date=20130805)
%import_files(date=20130812)
%import_files(date=20130819)
%import_files(date=20130826)

就像上面写的宏一样简单,甚至硬编码这四个日期。如果日期在某种程度上是可预测的,您也可以非常容易地生成宏调用(例如,如果有超过4个)。您可以在目录中列出文件所在的位置,或者使用call EXECUTE从数据步骤调用宏(如果您真的喜欢循环的话)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20386869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档