楼主: jsuper1261
2101 9

筛选一个文件夹下很多数据集的宏? [推广有奖]

  • 0关注
  • 0粉丝

本科生

94%

还不是VIP/贵宾

-

威望
0
论坛币
40 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
3265 点
帖子
83
精华
0
在线时间
108 小时
注册时间
2012-8-20
最后登录
2021-1-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
一个文件夹里很多个数据集
要求筛选出每个数据集中的date变量为某一天的数据

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

现在希望能写个宏实现它

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

扫码加我 拉你入群

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

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

关键词:数据集 文件夹 SASHELP Where Table 文件夹 where

沙发
pobel 在职认证  发表于 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;
   
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhangzachary + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

和谐拯救危机

使用道具

藤椅
jsuper1261 发表于 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步只能对一个数据集起作用。。
不知咋改

使用道具

板凳
pobel 在职认证  发表于 2013-1-23 18:59:53 |只看作者 |坛友微信交流群
jsuper1261 发表于 2013-1-23 18:34
libname mylib 'C:\data';
%let newlib=work;
因为PROC SQL那一步只是把第一个数据集的名字存到了宏变量dataname中。

如果用这种方法应该需要用到宏了。
和谐拯救危机

使用道具

报纸
jsuper1261 发表于 2013-1-23 19:47:46 |只看作者 |坛友微信交流群
那要改的话怎么改呢?

使用道具

地板
pobel 在职认证  发表于 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()
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
jsuper1261 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

和谐拯救危机

使用道具

7
jsuper1261 发表于 2013-1-24 10:14:44 |只看作者 |坛友微信交流群
pobel 发表于 2013-1-23 21:09
libname mylib 'C:\data';
%let newlib=work;
谢谢!

使用道具

8
Eternal0601 发表于 2013-1-24 16:09:48 |只看作者 |坛友微信交流群
pobel 发表于 2013-1-23 17:01
%let libname=exist-libname;
%let Con=%str(date='23Jan2013'd);
%let newlib=work;
大侠,问下sashelp.vtable 跟sql中dictionary是镜像关系吗?感觉有些像,谢谢!

使用道具

9
pobel 在职认证  发表于 2013-1-24 16:21:57 |只看作者 |坛友微信交流群
Eternal0601 发表于 2013-1-24 16:09
大侠,问下sashelp.vtable 跟sql中dictionary是镜像关系吗?感觉有些像,谢谢!
sashelp.vtable 是一个视图。

log:

4973  proc sql;
4974   describe view sashelp.vtable;
NOTE: SQL view SASHELP.VTABLE is defined as:

        select *
          from DICTIONARY.TABLES;

4975  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds
和谐拯救危机

使用道具

10
Eternal0601 发表于 2013-1-24 16:24:17 |只看作者 |坛友微信交流群
pobel 发表于 2013-1-24 16:21
sashelp.vtable 是一个视图。

log:
喔,明白了,谢谢

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 01:43