亦余心之所善兮,雖九死其猶未悔!
好久沒有更新文章了,上一次更新還是2023年10月25日,到現在已經15個月了。坦白來講,其實當時是計畫按月來更新sas程式設計的一些心得和體會的。鑑於當時我的sas水平還是屬於閉門造車的境界,且對於sas語言的理解其實是不夠深刻的,更多的則是對自己的不滿意,所以這個計畫也一度中止。
事隔一年,期間在各式各樣的sas**中也遇到了各種各樣的實際問題,對於sas的理解相比與一年前也熟悉了不少。16年春節回家,思考和反省了這一年多的自己,覺得有必要將一年前的計畫重新做起來,雖然晚了一年,還是相信好事多磨。
我的心依然像《楚辭》裡邊這句話一樣「亦余心之所善兮,雖九死其猶未悔!」。
好了,閒話就不多說了。今天計畫分享一些sas程式設計中「獲取資料集觀測值個數並且將獲取的個數建立為乙個巨集變數」的各種方法:包括data步,proc步等等。
一、使用data步nobs選項。
程式:data _null_;
set a nobs=nobs; /*用nobs選項*/
call symput("nobs",nobs); /*data步中建立巨集變數*/
stop;
run;
%put &nobs.; /*輸出巨集變數&nobs.*/
二、使用proc sql語句
proc sql noprint;
select count(*) into:n_num
from a
quit;
%put &n_num.;
三、data步使用open函式、attrn函式
data _null_;
dsid=open("a");
nobs=attrn(dsid,"nobs");
rc=close(dsid);
call symput("nobs",nobs);
run;
%put &nobs.;
四、使用資料字典方法
proc sql;
select nobs into:nobs
from dictionary.tables
where libname="work" and memname="a" /*注意此處雙引號內內容必須要大寫*/
quit;
%put &nobs.;
雖然是小技巧,但是有很多不同的實現方法哦!而且每個方法實現的原理都不一樣,且涉及到不一樣的sas執行機制,所以執行的效率也不一樣。了解程式的內部執行機制對於以後處理大資料量資料時的sas程式的編寫也會有很大效率差異哦!!!
祝大家新年快樂!!祝自己新年快樂!!
如何使用SAS邏輯庫
什麼是sas邏輯庫?通俗地講,就是儲存sas資料集的倉庫。當然,sas邏輯庫的定義遠不是這樣,但是為了方便理解,我暫且把它理解成這樣。其實sas邏輯庫是乙個邏輯標識,指向乙個物理的位址,我們在使用sas邏輯庫的時候其實就是在使用這個實體地址,比如說,乙個名為mylib的邏輯庫,其指向的實體地址為d ...
SAS中的if過濾語句
在sas中,if語句和where語句都有過濾作用,請看如下兩端 其效果是相同的 data a set sashelp.class if eq 男 run data a set sashelp.class where eq 男 run if 過濾語句的基本語法為 if 條件 其完整形式應該是 if 條...
SAS中變數命名規則
一般sas中變數命名規則 下劃線跟英文本母開頭,英文本母 數字 下劃線組成,且總長度不超過32個英文本元長度。那麼可以使用中文作為變數名麼?答案是肯定的。sas中有個專門的系統選項用來設定 大小寫均可 option validvarname v7 any upcase 若不用此選項語句,預設為v7,...