sas如何顯示行數 SAS中獲取資料集觀測值個數

2021-10-13 02:14:42 字數 1271 閱讀 8576

亦余心之所善兮,雖九死其猶未悔!

好久沒有更新文章了,上一次更新還是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,...