1.查詢缺失值的萬能程式
data missing;
set sasuser.xb;
array cha[*] _character_ \*利用*好不指定cha陣列中的字元型變數個數*\
do i=1 to dim(cha); \*指定迴圈次數為陣列cha中的元素數*\
if missing(cha[i]) then output;
end;
array num[*] _numeric_;\*利用*號不指定num數中的數值型變數個數*\
do i=1 to dim(num); \*指定迴圈次數為陣列num中的元素數*\
if missing(num[i]) then output;
end;
proc print;
run;
cha[*]和num[*]的意思是建立陣列cha和num,但不指定陣列中的元素數,具體有多少個由sas根據變數來自己判斷。
dim()函式是專門針對陣列的函式,它的作用是返回指定陣列所含的元素個數。如指定陣列array x[*]a b c,則dim(x)返回值為3.
2.查詢異常值
基本格式為:
data 新資料集;
set 已有資料集;
if|where 條件語句;
proc print;
run;
這幾句語句的意思是建立乙個新資料集,然後利用set語句把所有的資料集複製進來,但並非全部複製,而是根據if或where語句指定的條件,僅複製符合條件(如缺失或異常等)的記錄。
**if和where的區別
1)if和where都可以使用的場合
在利用set語句有條件地複製資料集時,set後緊跟著條件語句,此時用if和where都可以。但where的執行速度要快一點。
2)只能用if的幾種場合
使用sas的自動變數時;如果指定的條件變數是新產生的變數,只能用if,不能用where。
3)只能用where的幾種場合
當使用某些特殊運算子時(between…and,contains);當呼叫某一proc過程時,如果要選擇部分觀測執行該過程,只能用where語句,不能用if語句。
還有當做資料集選項使用時,只能用where,不能用if。
3.查詢異常值的萬能程式
%let data=sasuser.xb;
%let id=id;
%macro outline(var=,low=,high=);
data outline;
set &data.(keep=&id. &var.);
length variable $20. reason $20.;
variable="&var.";
value=&var.;
if &var.<&low. and not missing(&var.) then do;
reason="過低";
output;
end;
else if &var.>&high. and not missing (&var.) then do;
reason="過高";
output;
end;
drop &var.;
run;
%mend outline;
%outline(var=height,low=150,high=200);
%outline(var=weight,low=40,high=100);
%outline(var=y1,low=1,high=5);
%outline(var=y2,low=1,high=5);
%outline(var=y3,low=1,high=5);
%outline(var=y4,low=1,high=5);
%outline(var=y5,low=1,high=5);
proc print data=outliner1;
run;
需要修改的地方:第一行的資料集;第二行的id變數;最後幾行的7個outline。 SAS學習筆記(七) 關於異常值處理
sas中對於類別變數 離散 分布觀察用proc freq,對於連續變數則用proc univariate來完成。識別連續型變數的異常值通常稱為盒形圖,一般採用 proc univariate data train plot var variable run plot選項輸出變數的莖葉圖 觀測數少 或...
機器學習 異常值檢測
在生產生活中,由於裝置的誤差或者人為操作失當,產品難免會出現錯誤。然後檢查錯誤對人來說又是乙個十分瑣碎的事情。利用機器學習進行異常值檢測可以讓人類擺脫檢錯的煩惱。sum limits m sum limits m p x prod limits n sigma j 2 異常檢測演算法是乙個非監督學習...
資料預處理之異常值處理
異常值,即在資料集中存在不合理的值,又稱離群點。比如年齡為 1,膝上型電腦重量為1噸等,都屬於異常值的範圍。從集合角度來看,異常值即離群點,如下圖所示 對屬性值進行乙個描述性的統計,從而檢視哪些值是不合理的。比如對年齡這個屬性進行規約 年齡的區間在 0 200 如果樣本中的年齡值不再該區間範圍內,則...