SAS编程:如何批量读入某路径下外部文档数据?

SAS编程:如何批量读入某路径下外部文档数据?,第1张

SAS日志文件的Issue检查涉及多个日志文件的导入,导入的过程分为2个部分。 第一部分,获取特定路径下所有日志文件的名称(即文件地址);第二部分,获取文件地址后将文件导入SAS数据集

这两部分功能的实现,之前都有过介绍:

这篇文章将这两部分的内容整合到一起,演示路径如下:

程序思路是,使用 Dopen 函数打开特定路径,通过 Dnum 函数获取路径内的文件数目,基于此使用Do循环以及 Dread 函数进行读取文件名称,路径名称与文件名拼接可以获得文件路径。最后,对数据集进行筛选,只保留.LOG文件。

程序运行结果如下:

前面文章介绍了2种导入方法,推荐使用 infile 语句。我手动将保存导入内容的长度设置为1000,这个值已经是比较大了。但是对于一些Log Issue,会将所有变量取值输出到日志中,这时候很容易造成内容截断。

不过,从检查Issue的角度看,可以在导入时筛选特定记录进行输出,截断不影响检查的判断结果。当然,也可以设置SAS读入文档的记录的最大长度32767,这大概率会避免内容的截断。

结果如下:

批量读入外部文档,是单个文档读入的延伸。文档读入SAS数据集,方便后续的检查处理。

感谢阅读, 欢迎关注!

若有疑问,欢迎评论交流!

/*将一个数据集中的每一个观测单独生成一个txt文件*/

/*dataset:逻辑库名.数据集名,例如work.a ,outpath:输出路径,例如C:\Users\Administrator\Desktop,不要加引号 */

%macro export(dataset,outpath)

/*获取观测总数*/

data _null_

set &dataset nobs=nobs

call symputx('nobs',nobs)

run

/*拆分*/

%do i=1 %to &nobs

data &dataset&i

set &dataset

if _n_=&i

run

%put &dataset.&i

/*生成txt文件*/

proc export data=&dataset&i outfile="&outpath.\obs_&i..txt" dbms=TAB REPLACE

run

/*删除产生的子数据集*/

proc delete data=&dataset&irun

%end

%mend export

%export(dataset,outpath)

回答于 2017-04-21


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12004913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存