如何在SAS中迭代文件?

时间:2014-02-19 16:12:33

标签: sas

我想迭代特定文件夹中的文件,并提取其文件名的子字符串。有一个简单的方法吗?

lib dir '.../folder';
#iterate through all files of dir and extract first five letters of file name;
#open files and do some processesing, aka data steps proc steps;

1 个答案:

答案 0 :(得分:3)

首先,我指出" dir"似乎是拼写错误的libref,而不是文件夹。如果要查找文件夹中的文件,可以使用:

   %macro get_filenames(location);
    filename _dir_ "%bquote(&location.)";
    data filenames(keep=fname);
      handle=dopen( '_dir_' );
      if handle > 0 then do;
        count=dnum(handle);
        do i=1 to count;
          fname=subpad(dread(handle,i),1,5);/* extract first five letters */
          output filenames;
        end;
      end;
      rc=dclose(handle);
    run;
    filename _dir_ clear;
    %mend;

%get_filenames("c:\temp\");

如果您在中寻找数据集,您可以使用:

proc sql;
create table datasets as
  select substr(memname,1,5) as dataset
  from dictionary.tables
  where libname='LIB'; /* must be uppercase */

任何一种方法都会产生一个'文件的数据集。随后可以逐步完成' ..