SAS 編程技藝鑒賞(一)

SAS 編程語言成名已久,這幾年尤其在醫(yī)藥行業(yè)數(shù)據(jù)分析領(lǐng)域一騎絕塵,臨床數(shù)據(jù)分析從業(yè)者幾乎人人都會些 SAS 編程。其中初學者不少,高水平的 SAS 編程愛好者亦如過江之鯽。時至今日,筆者在各路論壇、交流群、博客已見過不少令人苦思冥想或眼前一亮的 SAS 代碼,并記于此,一來奇葩應(yīng)當共賞,二來也提升個人的 SAS 編程水平。
筆者編程水平有限,如有不對之處,還請指正。
以下程序是什么意思?
它是嵌套循環(huán)的簡略寫法嗎?
當然不是。原程序?qū)嶋H上利用了 do loop 的特殊語法形式——用逗號隔開多個循環(huán)元素(范圍),它實際上等價于:
若你還不了解逗號在循環(huán)語句中的作用,則可以進一步解構(gòu)為:
即首先將循環(huán)變量 i 從 1 遍歷到 7,然后再進行一次循環(huán),循環(huán)變量從 0 或 1 遍歷到 7,總共進行 15 或 14 次循環(huán)。具體按照方式1還是方式2運行,則要看表達式 (j=1) 的解析結(jié)果。該表達式返回的布爾類型結(jié)果,將作為第二個循環(huán)范圍的起始值。
由于變量 i 和 j 都常常被用作循環(huán)變量,原程序變得富有欺詐性,即便是有經(jīng)驗的程序員,也不容易很快識出程序的真正目的。請注意,不要有意地在生產(chǎn)程序中使用深奧難明程序設(shè)計,這會對閱讀程序的其他人員帶來困擾。
標簽:SAS