全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4400 10
2011-06-21
大家好!
       我碰到了一个问题:在我的逻辑库中,混有dirty的数据集,请问我应该怎样清除?
      问题如下
              逻辑库Data当中,正常的数据集是sh000001-600000.但是,有的数据集名称为sh0a0001。就是后面应该是数字的部分低二位中间混有字符。
              这种数据集是需要清除的。
             请问我用程序怎么实现?

             我觉得就是怎么获取变量名的问题。

谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2011-6-22 10:48:51
可以用macro来做,将每个dataset名赋给macro变量,然后判断macro变量的值是否在sh000001-600000之间
proc datasets lib=libname1 ;
contents out=dsn(keep=MEMNAME where =(input(sbustr(MEMNAME,3,6),6.)<1 and input(sbustr(MEMNAME,3,6),6.)>600000)) noprint;
run;
quit;
proc sql;
   select distinct MEMNAME into : dsn SEPARATED by ' ' from dsn
   ;
quit;

%macro scanloop;
%let counter=1;
%do     %while(%scan(&dsn,&counter,%str( )) NE );
  %let dsn1=%scan(&dsn,&counter,%str( ));
  %put &dsn1;
  proc datasets lib=libname1;
  delete &dsn1;
  run;
  quit;
    %let counter=%eval(&counter+1);
%end;
%mend scanloop;
%scanloop;
二维码

扫码加我 拉你入群

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

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

2011-6-22 11:05:07
2# honghejing

能具体讲讲吗?谢谢~我对宏不熟悉~谢谢~
二维码

扫码加我 拉你入群

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

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

2011-6-22 11:17:35
程序我发上去了,你可以先试试,如有问题可以联系我
3# liu022
二维码

扫码加我 拉你入群

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

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

2011-6-22 11:17:53
复制代码
用元数据
希望对你有帮助
可能有错,概不负责
二维码

扫码加我 拉你入群

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

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

2011-6-22 11:23:02
4# honghejing

非常感谢,我试试~
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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