臨床試驗生成Table時夕冲,不管是頻數(shù)統(tǒng)計,還是描述性統(tǒng)計裂逐,有一些Table是需要輸出匯總組的耘擂。
這篇文章介紹2種創(chuàng)建匯總組的方法,一種是Data步中Output
語句絮姆;另一種,F(xiàn)ormat過程步中的Multilabel
選項秩霍。
推薦大家嘗試第二種方法篙悯。
代碼舉例,參考之前的文章铃绒,SAS編程:頻數(shù)匯總時鸽照,如何使分組類別按固定順序展示?颠悬。
方法1:Data步中Output
語句輸出匯總組
這個應(yīng)該是大家常用的輸出方法矮燎,將分析數(shù)據(jù)集的所有觀測output2次,第2次的分組變量命名為Total組赔癌,這樣就創(chuàng)建了一個符合分析要求的匯總試驗組诞外。
在示例代碼中,為Sex變量創(chuàng)建一個新的分組灾票,sex = "Total"
:
**Get data from sashelp.class;
data class;
length sex $5;
set sashelp.class;
*Create count flag;
flag = 1;
output;
*Create Total;
sex = "Total";
output;
run;
**Set format for class var;
proc format;
value $sex (notsorted)
"M"="Male"
"F"="Female"
"Total"="Total"
;
run;
**Get count;
proc means data = class nway completetypes;
class sex/ preloadfmt order = data;
var flag;
output n=count out = result1;
format sex $sex.;
run;
從結(jié)果中看峡谊,正常輸出匯總組。同時,輸出的順序為Format中定義好的順序既们。
方法2:Format過程步中的Multilabel
選項輸出匯總組
Multilabel
是Format過程步中Value語句的選項濒析,照字面講,就是多重標(biāo)簽的含義啥纸,該選項可以為變量值賦多個標(biāo)簽号杏。具體語法說明,可以查看SAS官方文檔:SAS Help Center: Syntax: PROC FORMAT VALUE Statement斯棒。
利用這一點盾致,我們可以直接在Format的過程步中進(jìn)行創(chuàng)建匯總組:
**Set format for class var;
proc format;
value $sex (notsorted multilabel)
"M"="Male"
"F"="Female"
"M","F"="Total"
;
run;
SAS中支持多重標(biāo)簽的過程步只有三個,PROC MEANS, PROC SUMMARY和PROC TABULATE名船。我們可以在這三個過程步中绰上,在提前設(shè)置Class變量格式時,使用mlf
調(diào)用定義好的多重標(biāo)簽渠驼,實現(xiàn)匯總組的輸出蜈块。
**Set format for class var;
proc format;
value $sex (notsorted multilabel)
"M"="Male"
"F"="Female"
"M","F"="Total"
;
run;
**Get data from sashelp.class;
data class;
length sex $5;
set sashelp.class;
*Create count flag;
flag = 1;
run;
**Get count;
proc means data = class nway completetypes;
class sex/ preloadfmt mlf order = data;
var flag;
output n=count out = result2;
format sex $sex.;
run;
可能大家覺得,這個跟Output語句相比迷扇,Multilabel
選項也沒有簡化多少步驟百揭。最直接的改變,是將分析數(shù)據(jù)集的記錄數(shù)減少一半蜓席,提高程序的運行效率器一;其次,在處理多個試驗匯總組或多個變量匯總時厨内,更加直觀祈秕。
例如,有多個試驗匯總組的情況:
proc format;
value trt (notsorted multilabel)
1, 3, 5 = "Total 1"
2, 4, 6 = "Total 2"
;
run;
例如雏胃,有多個變量匯總組的情況(文章開頭圖片):
proc format;
*Format for arnrind;
value $anrind(notsorted multilabel)
"Normal" = "Normal"
"Abnormal NCS" = "Abnormal Non-clinical Significant"
"Abnormal CS" = "Abnormal Clinical Significant"
"Normal", "Abnormal NCS", "Abnormal CS" = "Total"
;
*Display for group var;
value $bnrind(notsorted multilabel)
"Normal" = "1"
"Abnormal NCS" = "2"
"Abnormal CS" = "3"
"Normal", "Abnormal NCS", "Abnormal CS" = "4"
;
run;
第二個例子请毛,多解釋一下,計數(shù)輸出的結(jié)果會進(jìn)行Transpose(轉(zhuǎn)置)瞭亮。轉(zhuǎn)置的ID變量為bnrind
方仿,其變量值會成為轉(zhuǎn)置后變量名的一部分,所有輸出為數(shù)字更為方便统翩。至于Header的顯示內(nèi)容仙蚜,直接在Report過程步中設(shè)置。
總結(jié)
這篇文章介紹了生成Table時厂汗,2中創(chuàng)建匯總組的方法委粉。推薦大家使用multilabel
選項,提高程序的運行效率娶桦。
感謝閱讀艳丛!若有疑問匣掸,歡迎評論區(qū)交流!