全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2020 4
2012-10-03
求教:要对一个library里的所有数据集做同样的处理,应该怎么操作?很多数据集,写macro再一个个敲数据集的名字都很麻烦。。。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-3 01:29:24
在线坐等热心人解答
二维码

扫码加我 拉你入群

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

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

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)
二维码

扫码加我 拉你入群

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

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

2012-10-3 08:44:25
顺便说一句,可以利用软件如ACDSEE等将数据库批量命名,再做上述处理
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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