全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2599 2
2013-05-21
学sas中,写了个判断字符型变量的缺失值是否大于给定阀值的宏,分享一下。
data text1;
input x1 $ x2 $ y $;
cards;
. 2 a
. 3 b
6 7 .
3 4 c
9 8 e
. 24 .
8 . g
. 33 .
22 77 t
. 19 b
20 . u
21 16 o
;
run;

proc contents data=work.text1 out=tt;
run;
%macro varmiss(rate);
%if %sysfunc(exist(work.miss)) ne 0 %then %do;
proc datasets lib=work;
delete         miss;
quit;

data miss;
length var $10 percent flag 5;
stop;
run;
%end;
%let disd=%sysfunc(open(work.tt));
%if &disd gt 0 %then %do;
%let nobs=%sysfunc(attrn(&disd,nobs));
%do i =1 %to &nobs;
  %let rc=%sysfunc(fetchobs(&disd,&i));
  %let varnume=%sysfunc(varnum(&disd,name));
  %let variable=%sysfunc(getvarc(&disd,&varnume));
ods listing close;
ods output         OneWayFreqs=cc&i.;
proc freq data=text1 ;
tables &variable. /missing;
run;
ods output close;
ods listing;

data freq&i.(keep=&variable. percent flag rename=(&variable.=var));
set cc&i.;
if &variable eq "" then do ;
&variable.="&variable.";
if percent gt &rate. then flag=1;else flag=0;
output;
end;
run;

proc append base=miss data=freq&i. force;
run;
%end;
%let disd=%sysfunc(close(&disd));
%end;
%mend;
%varmiss(30);

二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-21 14:18:03
沙发自己做了。。。
二维码

扫码加我 拉你入群

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

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

2013-5-21 14:53:00
牛逼呀
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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