热线电话:13121318867

登录
首页精彩阅读SAS 处理极值_数据分析师
SAS 处理极值_数据分析师
2014-11-19
收藏
SAS 处理极值_数据分析师


按照百分位数处理极端值
比如将99%分位数以上的数用99%分位数代替,1%分位数以下的数用1%分位数代替。
(一)一个变量
option mlogic;
%macro quan(data,variable,ll,ul) ;
 proc means data=&data ;
   var &variable;
  output out=&data.1 (drop= _type_ _freq_) &ll=a &ul=b;
run;
data &data.2;
 set &data;
    if _n_=1 then set &data.1;
    if &variable
    if &variable>b then x=b;
    drop  a b;
run;
 %mend;
 %quan(quan,x,p5,p95)
此处利用宏来修改原数据集,此处四个参数data,variable,ll,ul分别代表数据集、变量以及上下限。
另外我们亦可以利用proc rank来编写,得到相应的分位数的值。亦可以利用proc univariate过程。有兴趣的可以参考《cody’s data cleanning techniques》。
(二)多个变量
多个变量的方法也是类似于一个变量的。
%macro quan1(number) ;
data quan;
 array x(&number) x1-x&number;
  do i=1 to 1000;
    %do j=1 %to &number;
     x{&j}=ranuni(0);
    %end;
  output;
end;
drop i;
run;
proc means data=quan;
  var x1-x&number;

   output out=quan1 (drop= _type_ _freq_)

benwen:https://www.cda.cn/

        p5(x1-x&number)=a1-a&number  p95(x1-x&number)=b1-b&number;
run;
data quan2;  
  set quan;
  if _n_=1 then set quan1;
   array x(&number)x1-x&number;
    array a(&number) a1-a&number;
    array b(&number) b1-b&number;
     do i=1 to dim(x) ;
       if x{i]
        if x{i}>b{i} then x{i}=b{i};
    end;
    keep  x1-x&number;
%mend;
%quan1(4)

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询