proc?means:解決做table時遇到的問題簡述

文章1

XTH,公眾號:CDISC與SAS

制作匯總表時不用dummy的方法,解決分類變量數(shù)據(jù)缺失-- proc means/ freq

文章2

徐XTH,公眾號:CDISC與SAS

如何按照TFL模板給出的順序出表或者QC

之前文章介紹的方法,在實際工作當中碰到了些許問題。

產(chǎn)生問題的原因如下:

? ? ? ? 文章1:按條件篩選之后,待proc meas的數(shù)據(jù)集完全為空。

? ? ? 文章2:盡管按照proc format notsorted的順序排列,但是當我們需要proc transpose的時候依然要重新排序。

文章1:

? ? 之前說過proc format和proc means的preloadfmt組合可以不用自建dummy數(shù)據(jù),但是實踐中發(fā)現(xiàn)了一個隱形條件:數(shù)據(jù)集必須存在format定義的任意一個value。換句話說數(shù)據(jù)集肯定不能為空。

解決方法:

? ? ? ? proc format中新加一個定義:' ' = ' ',引號間要有空格。

? ? ? ? 同時空的數(shù)據(jù)集插入一條n=1的數(shù)據(jù),這里n=1詳看鏈接文章1?;蛘吆唵蝸碚fproc means里的參數(shù)var僅能計算數(shù)值,那么我直接n=1,這條觀測的其他變量就都是=' '。

結(jié)論:

? ? ? ? 因為proc format和數(shù)據(jù)集都有了相同的value: ' ',那么就可以實現(xiàn)不用創(chuàng)建dummy的需求。所以說兩邊具有相同的value,才是能體現(xiàn)preloadfmt的真正價值。

文章2:

? ? ? ? 我們在用proc means的時候通常不會class一個變量,比如我想要計算不同性別的受試者在不同藥物下的人數(shù),那么自然class藥物和性別。而且一般最終的展示是藥物為縱列,性別為橫行,那么肯定要transpose。

? ? ? ? 常用proc transpose應該知道要預先排序,但是如果按照我們proc format notsorted的排序是沒辦法操作的。

解決方法:

? ? ? 在proc means產(chǎn)生的數(shù)據(jù)集中生成一個id=_n_的變量,也就是讓id記住當前proc format notsorted的排序,然后這個數(shù)據(jù)集當作dummy,再和transpose后的數(shù)據(jù)集merge,最后再按id排序即可。

結(jié)論:

? ? ? 此方法沒什么新意,甚至還是需要構(gòu)造dummy數(shù)據(jù)集,之后可以再研究下transpose有沒有保留排序的方法。

總結(jié):

? ? ? ? 實際做表的過程中發(fā)現(xiàn),此一系列方法確實讓代碼簡潔,且分割成塊很容易理解。就算項目不同,復制過去更改的地方也只是format。推薦大家使用此方法,盡可能地把需要更改的地方集中在一塊。

如有問題,歡迎后臺私信討論。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容