楼主: chicago1898
2921 3

SAS macro小问题,急! [推广有奖]

  • 0关注
  • 0粉丝

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
8 小时
注册时间
2013-12-13
最后登录
2016-7-12

楼主
chicago1898 发表于 2016-6-17 03:40:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
情况是这样的,现有两个文件夹在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,不知道该怎么写循环。

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

二维码

扫码加我 拉你入群

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

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

关键词:Macro acr CRO Mac 小问题 文件夹 产品 命名 字母

沙发
jzplarry 发表于 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把数据集的名字放到一个数据集里就好了。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-7 06:53