1)讓SAS也能用中文變數名
預設的SAS命名規則是無法使用中文等特殊字元作為SAS名,不過我們可以透過validvarname=any系統選項,突破此限制,不僅如此,我們甚至可以透過validmemname=extend系統選項突破資料集名稱的限制。
optionsvalidmemname=extend validvarname=any ;

↑突破命名限制
技雖如此,但並不推薦,在確實無奈的情況下,比如別給了你一個幾百個中文變數名的CSV檔案,可以考慮救急。
(2)忽略開啟SAS資料集提示格式錯誤
有時候會碰到別人給的SAS資料集,用libname設定好邏輯庫後,卻仍然無法開啟,總是提示格式錯誤,此時可用nofmterr選項忽略此類錯誤。
options nofmterr;
(3)一鍵清理SAS的所有結果
當SAS結果視窗結果太多,希望儘快清理乾淨,從一個乾淨清爽的基礎重新開始時,dm命令就可以派上用場了。
↑Results樹形目錄下結果很多
dmodsresults "clear"continue;
直接執行上面的程式碼,還給你一個清爽的世界,效果如下。
↑Results樹形目錄下結果一鍵清理
(4)SAS繪圖設計器幫你寫畫圖程式碼
關於SAS繪圖,我曾寫過系列教程,目錄如下:
但是真正願意去用SAS寫程式碼繪圖的人較少。其實,我們可以試試%sgdesign,用拖拽的辦法繪圖,並且可以儲存背後的SAS GTL程式碼為日後所用。
% sgdesign;
↑sg designer
↑圖及GTL程式碼
(5)逃離「黑洞」錯誤
有沒有碰到這樣一種情況:執行任何SAS程式碼,SAS都沒有任何結果,也沒有錯誤反饋,只是在log裡重複顯示你的程式碼。
這就是所謂的「黑洞」錯誤,你進入了這樣一個「黑洞」,任何執行的SAS程式碼都被他吸入,木有任何反饋!
神馬?你還沒遇到過,看來歷練還不夠啊。執行下面一段宏程式碼,再試試後面其他SAS過程步。
%macrotest;
%put This is a "Balk Hole"test;
%put**** %str(Gu's Wechat) ****;
%mend ;
%test
/*以下程式碼不管怎麼執行就是沒反應啊*/
proc print data=sashelp.class;
run;
怎麼破?執行下面程式碼,可以跳出來!
');
%mend;
其實,這個示例還是比較簡單的,仔細觀察宏定義,發現問題可能就在於單引號不匹配導致。完整的匹配是這樣的:
%put**** %str(Gu's Wechat) ****; %mend ; '); %mend;
但是,如果在複雜一點的宏,我們可能就沒那麼容易一眼找到問題所在了,所幸的是,我們可以用一段萬能程式碼,多次執行,直到出現錯誤提示,就可以逃離黑洞!這就是:
*';*";*);*/; %mend; run;
(6)SAS EG/SAS Studio寫程式碼
初學者,可能總是記不住函式,記不住選項。沒關係,讓SAS自動給我們提示吧。這時,可以試試在SAS EG或者SAS Studio裡寫程式碼。
↑SAS studio
(7) 一鍵格式化別人凌亂的程式碼
遇到別人寫的無法直視的SAS程式碼,難道要白白忍受嗎?別了,在SAS EG裡藉助ctrl+i一鍵縮排程式碼,從此整整齊齊,一鍵治好強迫症患者。
1)讓SAS也能用中文變數名
預設的SAS命名規則是無法使用中文等特殊字元作為SAS名,不過我們可以透過validvarname=any系統選項,突破此限制,不僅如此,我們甚至可以透過validmemname=extend系統選項突破資料集名稱的限制。
optionsvalidmemname=extend validvarname=any ;

↑突破命名限制
技雖如此,但並不推薦,在確實無奈的情況下,比如別給了你一個幾百個中文變數名的CSV檔案,可以考慮救急。
(2)忽略開啟SAS資料集提示格式錯誤
有時候會碰到別人給的SAS資料集,用libname設定好邏輯庫後,卻仍然無法開啟,總是提示格式錯誤,此時可用nofmterr選項忽略此類錯誤。
options nofmterr;
(3)一鍵清理SAS的所有結果
當SAS結果視窗結果太多,希望儘快清理乾淨,從一個乾淨清爽的基礎重新開始時,dm命令就可以派上用場了。

↑Results樹形目錄下結果很多
dmodsresults "clear"continue;
直接執行上面的程式碼,還給你一個清爽的世界,效果如下。

↑Results樹形目錄下結果一鍵清理
(4)SAS繪圖設計器幫你寫畫圖程式碼
關於SAS繪圖,我曾寫過系列教程,目錄如下:
但是真正願意去用SAS寫程式碼繪圖的人較少。其實,我們可以試試%sgdesign,用拖拽的辦法繪圖,並且可以儲存背後的SAS GTL程式碼為日後所用。
% sgdesign;

↑sg designer

↑圖及GTL程式碼
(5)逃離「黑洞」錯誤
有沒有碰到這樣一種情況:執行任何SAS程式碼,SAS都沒有任何結果,也沒有錯誤反饋,只是在log裡重複顯示你的程式碼。
這就是所謂的「黑洞」錯誤,你進入了這樣一個「黑洞」,任何執行的SAS程式碼都被他吸入,木有任何反饋!
神馬?你還沒遇到過,看來歷練還不夠啊。執行下面一段宏程式碼,再試試後面其他SAS過程步。
%macrotest;
%put This is a "Balk Hole"test;
%put**** %str(Gu's Wechat) ****;
%mend ;
%test
/*以下程式碼不管怎麼執行就是沒反應啊*/
proc print data=sashelp.class;
run;
怎麼破?執行下面程式碼,可以跳出來!
');
%mend;
其實,這個示例還是比較簡單的,仔細觀察宏定義,發現問題可能就在於單引號不匹配導致。完整的匹配是這樣的:
%put**** %str(Gu's Wechat) ****; %mend ; '); %mend;
但是,如果在複雜一點的宏,我們可能就沒那麼容易一眼找到問題所在了,所幸的是,我們可以用一段萬能程式碼,多次執行,直到出現錯誤提示,就可以逃離黑洞!這就是:
*';*";*);*/; %mend; run;
(6)SAS EG/SAS Studio寫程式碼
初學者,可能總是記不住函式,記不住選項。沒關係,讓SAS自動給我們提示吧。這時,可以試試在SAS EG或者SAS Studio裡寫程式碼。

↑SAS studio
(7) 一鍵格式化別人凌亂的程式碼
遇到別人寫的無法直視的SAS程式碼,難道要白白忍受嗎?別了,在SAS EG裡藉助ctrl+i一鍵縮排程式碼,從此整整齊齊,一鍵治好強迫症患者。