SAS 判断数据集是否为空,并批量操作非空/空数据集

本文介绍了一个SAS宏程序,用于批量检查并删除指定数据库中所有空的数据集。宏首先获取数据库中所有数据集的名称,然后逐个检查每个数据集是否为空,若为空则将其删除。此过程通过嵌套宏实现,提高了数据管理和清理的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%macro delete_null(lib=);
														/*lib:数据库名称*/
proc sql noprint;
select memname into :sasdata separated by " " 
from  dictionary.tables
where upcase(libname)=upcase("&lib");
quit;												

%let i=1;
%do %until (%scan(&sasdata.,&i.," ")=);
		%let name=%scan(&sasdata.,&i.," ");			/*循环对work里所有数据集调用内部嵌套的“a”宏*/
		%a(data=&name);
	%let i=%eval(&i.+1);
%end;

%mend delete_null;

%macro a(data=);									/*data:数据集,如果该数据集为空就删掉*/

data _null_;
        if 0 then set &data nobs=nobs;
        call symputx('nobs',nobs);
        stop;
run;

%if &nobs=0 %then %do;
		proc datasets lib=work nolist;
        delete &data;
        quit;
%end;

%mend a;

  DO之后的操作内容可自定义。

转载于:https://www.cnblogs.com/jiulaosan/p/10729506.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值