全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2482 9
2013-01-23
一个文件夹里很多个数据集
要求筛选出每个数据集中的date变量为某一天的数据

当然你可以分别set每个数据集然后加个where条件,得到对应的数据集放在某个库下

现在希望能写个宏实现它

(提示:貌似sashelp的vtable中有关库的信息有用?)
二维码

扫码加我 拉你入群

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

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

全部回复
2013-1-23 17:01:23
%let libname=exist-libname;
%let Con=%str(date='23Jan2013'd);
%let newlib=work;

data _null;
   set sashelp.vtable;
   where libname=upcase("&libname");
   call execute("data &newlib.."||strip(memname)||";");
   call execute("   set &libname.."||strip(memname)||";");
   call execute("   where &con;");
   call execute("run;");
run;
   
二维码

扫码加我 拉你入群

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

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

2013-1-23 18:34:36
pobel 发表于 2013-1-23 17:01
%let libname=exist-libname;
%let Con=%str(date='23Jan2013'd);
%let newlib=work;
libname mylib 'C:\data';
%let newlib=work;

proc sql noprint;
        select memname into :dataname
        from sashelp.vtable
        where libname='MYLIB';
quit;

data &newlib..&dataname.;
        set mylib.&dataname.(where=(date='23JAN2013'd));
run;

这个可以修改吗?
dataname只能显示第一个数据集的名字,而且最下面的data步只能对一个数据集起作用。。
不知咋改
二维码

扫码加我 拉你入群

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

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

2013-1-23 18:59:53
jsuper1261 发表于 2013-1-23 18:34
libname mylib 'C:\data';
%let newlib=work;
因为PROC SQL那一步只是把第一个数据集的名字存到了宏变量dataname中。

如果用这种方法应该需要用到宏了。
二维码

扫码加我 拉你入群

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

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

2013-1-23 19:47:46
那要改的话怎么改呢?
二维码

扫码加我 拉你入群

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

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

2013-1-23 21:09:11
jsuper1261 发表于 2013-1-23 19:47
那要改的话怎么改呢?
libname mylib 'C:\data';
%let newlib=work;

%macro test(oldlib=mylib,newlib=work,con=%str(date='23JAN2013'd));
        proc sql noprint;
                select memname into :dataname1-:dataname9999
                from sashelp.vtable
                where libname=upcase("&oldlib");
        quit;

        %do i=1 %to &sqlobs;
        data &newlib..&&dataname&i;
                set &oldlib..&&dataname&i.(where=(&con));
        run;
        %end;
%mend;

%test()
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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