sas宏程序編寫教程 sas宏參數(shù)的兩種類型?
sas宏參數(shù)的兩種類型?SAS宏參數(shù)包含兩種類型的宏變量:自動啟動宏變量,由SAS系統(tǒng)提供給;用戶定義的宏變量,由用戶在程序中定義。自動啟動宏變量在SAS進程結(jié)束時,或程序運行過程中由系統(tǒng)自動創(chuàng)建角色
sas宏參數(shù)的兩種類型?
SAS宏參數(shù)包含兩種類型的宏變量:
自動啟動宏變量,由SAS系統(tǒng)提供給;
用戶定義的宏變量,由用戶在程序中定義。
自動啟動宏變量
在SAS進程結(jié)束時,或程序運行過程中由系統(tǒng)自動創(chuàng)建角色,在SAS再次前一直都一直保持比較有效,是全局宏變量,能在SAS任何地方被語句。
定義宏變量
有兩種定義宏變量:%LET和callsymput。定義宏變量并分配個值給宏變量的最簡單方法是使用宏程序語句%LET。格式萬分感謝:
%LET變量名變量值;
兩個語句是callsymput,其格式::
call!symput(變量名,變量值);
sas 小技巧?
1)讓SAS也能用中文變量名
設(shè)置成的SAS命名規(guī)則是沒能使用中文等特殊字符充當(dāng)SAS名,不過我們這個可以按照validvarnameany系統(tǒng)選項,強行突破此限制,不僅如此,我們甚至還這個可以按照validmemnameextend系統(tǒng)選項進階數(shù)據(jù)集名稱的限制。
optionsvalidmemnameextendvalidvarnameany
↑突破命名原則限制
技雖這般,但當(dāng)然不推薦推薦,在確實無可奈何的情況下,.例如別給了你一個幾百個中文變量名的CSV文件,是可以考慮到救救急。
(2)選擇性的遺忘再打開SAS數(shù)據(jù)集電腦提示格式問題
有時會出現(xiàn)別人給的SAS數(shù)據(jù)集,用libname設(shè)置好邏輯庫后,卻仍然無法顯示,總是提示解析錯誤,此時后用nofmterr選項遺漏掉此類錯誤。
optionsnofmterr
(3)一鍵備份清理過SAS的所有結(jié)果
當(dāng)SAS結(jié)果窗口結(jié)果過多,期望盡快需要清理弄干凈,從一個干凈清爽的基礎(chǔ)重新開始時,dm命令就可以不派上用場了。
↑Results樹形目錄下最后很多
dmodsresults#34clear#34continue
真接運行上面的代碼,送給你一個比較清爽的世界,效果不勝感激。
↑Results樹形目錄下結(jié)果一鍵設(shè)置清理過
(4)SAS繪圖設(shè)計器幫你寫cad作圖代碼
關(guān)於SAS繪圖,我曾寫過系列教程,目錄如下:
但是真正不愿意去用SAS寫代碼繪圖的人相對多。不過,我們可以不試一下%sgdesign,用可拖拽的辦法繪圖,因此是可以存放背后的SASGTL代碼為日后所用。
%sgdesign
↑sgdesigner
↑圖及GTL代碼
(5)逃出「黑洞」錯誤
還有沒有見到過那樣一種情況:運行程序任何SAS代碼,SAS都沒有任何結(jié)果,也沒有錯誤反饋處理,僅僅在log里反復(fù)重復(fù)不顯示你的代碼。
這就是有所謂的「黑洞」錯誤,你進入到了這樣一個「黑洞」,任何不運行的SAS代碼都被他吸入,木有任何反饋!
神馬?你才剛遇到了過,很顯然磨煉算夠啊。運行下面一段宏代碼,再試一下后面其他SAS過程步。
%macrotest
%bringThis isa#34BalkHole#34test
%bring****%str(Gu#39sWechat)****
%mend
%test
/*以下代碼無論咋運行是沒反應(yīng)啊*/
procprint
run
怎末破?運行下面代碼,是可以突然冒出來!
#39)
%mend
反正,這個示例我還是比較好很簡單,細(xì)細(xì)的看仔細(xì)觀察宏定義,發(fā)現(xiàn)問題可能就本質(zhì)單引號不看操作導(dǎo)致。求完整的匹配是這樣的:
%throwing****%str(Gu#39sWechat)****%mend#39)%mend
可是,假如在緊張一點兒的宏,我們可能就沒那你太容易幾眼可以找到問題所在的位置了,尚幸的是,我們是可以用一段可用代碼,多次運行程序,等他再次出現(xiàn),就是可以逃走黑洞!這那是:
*#39*#34*)*/%mendkick
(6)SASEG/SASStudio寫代碼
初學(xué)者,很可能我總是記不住函數(shù),記不住選項。沒多大關(guān)系,讓SAS自動給我們電腦提示吧。此時,也可以試下在SASEG或是SASStudio里寫代碼。
↑SASstudio
(7)一鍵備份格式話別人凌亂不堪的代碼
遇到了別人寫的無法直視的SAS代碼,你以為要白白忍受嗎?別了,在SAS EG里借助于ctrli一鍵設(shè)置縮起代碼,這一世齊整整,一鍵恢復(fù)治好強迫癥患者。