熱線電話:13121318867

登錄
首頁精彩閱讀SAS處理極端值?_數據分析師
SAS處理極端值?_數據分析師
2014-11-15
收藏

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_)
        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)
此處任然利用上面的思路,只不過利用了數組的思路進行比較,然后判斷替換。
本程序是通過隨機生成數據進行分析,所以在變量名格式上(x1-x4)一致,所以方便后面判斷,宏的參數只有一個變量的個數。而實際情況比這個更加復雜。
http://www.ruiqisteel.com/

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢