全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2883 3
2016-06-17
情况是这样的,现有两个文件夹在sas grid 上,第一个文件夹里名称如下:

ghjk_000000, ghjk_003000,ghjk_100000,ghjk_103000,ghjk_163000...
qwer_000000....
asdf_063000...
命名规则是前四个字母代表一种产品,每一种组合一种产品,后面的六位数就是时间,从零点开始到24点,只有整点和半点,比如100000和103000分别代表十点和十点半,文件夹里并不是每一个整点半点都有,只是有一部分。

第二个文件夹是和第一个文件夹一一对应的,数据内容不同而已。

我现在想写个循环做测试
%let nw = ghjk_ qwer_ asdf_;
%let h = 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23;
%let m = 00 30;

%macro Loop_Test;
%do i=1 %to 2;
   %do j=1 %to 24;
      %do k=1 %to 2;

         %if %sysfunc(exist(&nw,&i||&h,&j||&m,&k)) %then
         proc print ???????
                  

       %end;
   %end;
%end;

%mend;


想要通过遍历的方式去检测是否存在这个文件,如果存在,就把文件名print出来。。。。不知道怎么搞,第一次写sas,有点蛋疼。

其实真是目的是要分别提取每个数据集然后建立单独的project,不知道该怎么写循环。

谢谢大家给我建议!!!小弟初来乍到没有可悬赏的,还希望大家关照。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-6-17 09:15:55
是否可以用%put 文件名
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-17 13:35:04
我有一个方法把文件夹里的文件名读取到数据集里(,再去匹配)。

%let path1=;*第一个文件夹路径;
%let path2=;*第二个文件夹路径;
options noxwait noxsync;
filename _path1 pipe "dir ""&path1"" /b ";
data test1;
   infile path1 length=reclen ;
   input name $varying1024. reclen ;
   if scan(name,2,".") in ("sas7bat");*你的文件类型后缀;
run;
filename _path2 pipe "dir ""&path2"" /b ";
data test2;
   infile path2 length=reclen ;
   input name $varying1024. reclen ;
   if scan(name,2,".") in ("sas7bat");*你的文件类型后缀;
run;

data test;
        set test1 test2;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-18 17:18:09
如果只是要文件名的话,你可以直接用proc contents 或者proc datasets,配合ods把数据集的名字放到一个数据集里就好了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群