《SAS编程与数据挖掘商业案例》学习笔记之三
五:set語句
1.keep和drop指定變量進入或者不進入pdv
eg:
Data d1(keep=name)??data??d2 (keep=name sex);
??set sashelp.class(keep=name sex??rename=(name=name_new sex=sex_new)???where=(sex='M')??firstobs=3 obs=5);
Run;
注:
黃色部分標示只有name??sex兩個變量進入pdv,其余變量不會讀入,這樣會大大節省程序運行時間;
紅色部分表示對變量進行重命名
灰色部分代表對變量進行篩選
綠色部分代表從第三個記錄讀到第五個記錄
?
2.關于in?的應用
Data in1;
Set one(in=ina)??two(in=inb);
In_one=ina;
In_two=inb;
Run;
?
一個關于in的應用:
Data in2;
Set one(in=ina)??two(in=inb);
????If??ina=1 then flag=1;
???????else flag=0;
Run;
?
3.nobs和point的應用
?
data nobs;
set fvr.test1?nobs=obs_total;
total=obs_total;
output;
stop;
run;
綠色部分是將觀測數傳送給臨時變量obs_total;
上述語句只會返回數據集的第一條記錄
?
Data point1;
???n=2;
????Set??fvr.test1?point=n;
???Output;
???Stop;
Run;
注:point和nobs一樣,后面都要跟變量,而不能是常量;
Point語句必須與stop語句一起使用,凡是出現point語句必須出現stop語句,否則容易陷入死循環
point和nobs語句是相互獨立的,point語句是在pdv之后,而nobs語句是咋pdv?之前;
下面一個綜合應用(獲取數據集最后一條記錄):
Data nobs_point;
Set fvr.test1 nobs=last??point=last;
Output;
Stop;
Run;
程序解讀:編譯時nobs=對應數據信息(總觀測條數),會傳給last臨時變量;
接下來程序讀入test1進入pdv,讀到point=選項時,數據指針會獲取last的值,指針會直接指向last對應的觀測值,
最后輸出該觀測值;停止data步的執行;
上述方法是獲取數據集最后一條記錄最快速的方法,
像下面的語句:
Data zhu;
???set fvr.test1 end=obs_last;
???if obs_last=1;
Run;
顯然這個代碼需要將數據集全部讀入pdv,顯然是不經濟的
?
4.輸出多個數據集;
Data??d1??d2;
???set sashelp.class;
????if _n_ le 10 then output d1;
????else output d2;
Run ;
觀測序號小于或者等于10的輸入到d1,否則到d2
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的《SAS编程与数据挖掘商业案例》学习笔记之三的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《SAS编程与数据挖掘商业案例》学习笔记
- 下一篇: 《SAS编程与数据挖掘商业案例》学习笔记