首頁>Club>
7
回覆列表
  • 1 # 使用者834404694282

    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一鍵縮排程式碼,從此整整齊齊,一鍵治好強迫症患者。

  • 中秋節和大豐收的關聯?
  • 有哪些令人一眼驚豔的女生毛衣(衫)淘寶店鋪推薦?