楼主: 海穹
2071 4

[原创博文] 如何对library里的所有数据集做同样的处理 [推广有奖]

  • 1关注
  • 5粉丝

已卖:10份资源

博士生

54%

还不是VIP/贵宾

-

威望
0
论坛币
2646 个
通用积分
0
学术水平
3 点
热心指数
11 点
信用等级
2 点
经验
190 点
帖子
274
精华
0
在线时间
293 小时
注册时间
2010-4-23
最后登录
2020-10-24

楼主
海穹 发表于 2012-10-3 01:24:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求教:要对一个library里的所有数据集做同样的处理,应该怎么操作?很多数据集,写macro再一个个敲数据集的名字都很麻烦。。。
二维码

扫码加我 拉你入群

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

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

关键词:Library BRARY rar lib bra library 如何

沙发
海穹 发表于 2012-10-3 01:29:24
在线坐等热心人解答

藤椅
bobguy 发表于 2012-10-3 06:35:27
Here is a simple macro.

****generate sample data sets***;
libname s 'c:\temp';
  data s.t1 s.t2 s.t3;
     do i=1 to 20;
            x=ranuni(123);
                if x<=0.3 then output s.t1;
                else if x<=0.6 then output s.t2;
                else  output s.t3;
         end;
  run;


%macro patchitall(lib=);
  proc sql noprint;
    select memname into: dsn1 -: dsn30000
        from dictionary.tables
        where libname="%upcase(&lib)"
        ;
        %let n=&sqlobs;
        quit;

        %do i=1 %to &n;
          data &lib..&&dsn&i;
             set &lib..&&dsn&i;
                 *****define your operation here***;
                 y=1+x;
          run;
         %end;



%mend;
options mprint;
%patchitall(lib=s)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
海穹 + 1 + 1 + 1 观点有启发

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

板凳
zkymath 在职认证  发表于 2012-10-3 08:44:25
顺便说一句,可以利用软件如ACDSEE等将数据库批量命名,再做上述处理
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
海穹 + 1 + 1 + 1 热心帮助其他会员

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

报纸
yuerqieqie 发表于 2012-10-5 01:18:36
假设libname是lib。先用下面程序获得该library下所有SAS datasets名字。
proc sql;
        create table dsn as
        select memname
        from dictionary.tables
        where lowcase(libname) = "lib"
        and lowcase(memtype) = "data";
quit;
然后将这些datasets 名字附到macro variables里。
data _null_;
        set dsn end = eof;
        call symput(compress("dataName"||_n_), memname);
        if (eof) then call symput('N_data', compress(_n_)); run;
调用你的macro:
%do i = 1 %to &N_data;
        %usrdefineMacro(inputData = lib.&&dataName&i)
%end;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 05:57