今天來(lái)講講輸出listing需要注意的一些事項(xiàng),這些事項(xiàng)都是我們?cè)谧鲰?xiàng)目的時(shí)候需要遵守或者知悉的原則。
關(guān)于具體怎么輸出TFL,包括具體的格式,數(shù)據(jù)怎么放,放多少,目前應(yīng)該還沒(méi)有一份專(zhuān)門(mén)的文件指導(dǎo)說(shuō)明(應(yīng)該吧?),ICH E3-臨床研究報(bào)告的結(jié)構(gòu)和內(nèi)容? 我感覺(jué)也沒(méi)有很詳細(xì)的說(shuō)明到底怎么輸出listing。
但是里面有列出一個(gè)實(shí)驗(yàn)室測(cè)量值列表,大致給出了一個(gè)模板

這也確實(shí)是我們輸出listing的時(shí)候大致的格式,下面還有一個(gè)更具體的來(lái)自一篇論文的模板,可以說(shuō)實(shí)際工作中輸出的listing差不多就是按照這個(gè)樣式了(title和header可能每個(gè)公司會(huì)有差異)

所以我就按照上面這張圖片,來(lái)給大家講講大家在輸出listing的時(shí)候需要注意什么,同樣的,我也覺(jué)得這是屬于《SAS程序員的自我修養(yǎng)》之一。
1:在輸出用于listing的數(shù)據(jù)集的時(shí)候,并不需要提前輸出圖片里的那個(gè)樣子(也就是受試者編號(hào)只輸出一次),一般我們不做處理,該怎么輸出就怎么輸出,在proc report的時(shí)候我們order一下就好了。

order的意思就是上面紅框里的寫(xiě)法,這樣就能產(chǎn)生上面的效果。
2:那什么時(shí)候需要order呢?什么時(shí)候又不需要呢?拿上面的LB listing來(lái)說(shuō),對(duì)于重復(fù)輸出的subjid,category,test,我們需要order,其他的像訪視,檢查日期,研究日,檢查結(jié)果我們直接display就好了。
同時(shí)需要注意的是,你用order選項(xiàng)的時(shí)候,是跟column排列的順序有關(guān)的,比如你把Test放到VISIT后面的時(shí)候,也就是
column subjid?categoryTest Visit?和
column subjid?category?Visit?Test
造成的效果是不一樣的,后者的Test并不會(huì)只輸出一次,而是Visit輸出一次,Test就輸出一次,為什么,就是因?yàn)閂isit排在Test前面,相當(dāng)于這個(gè)受試者這個(gè)Test都是獨(dú)一無(wú)二的,所以order不起作用。
我記得第一次寫(xiě)listing的時(shí)候,不知道這個(gè)東西,沒(méi)有注意column的順序,一直在想為什么每條訪視都輸出一次檢驗(yàn)?zāi)?。所以這是大家需要注意的。
3:輸出report的時(shí)候我們一般還會(huì)要求空行,但是如subject-level的數(shù)據(jù)我們就沒(méi)必要空行了。但是在既往病史,不良事件,既往用藥這些listing,我們一般會(huì)按照組別加上一條空行,實(shí)驗(yàn)室檢查的我們一般在不同檢查項(xiàng)之間加上一條空行,就像下面這樣(圖中沒(méi)有空行,所以可能跟個(gè)人習(xí)慣和公司要求可能有關(guān),也沒(méi)有文件要求你必須空行吧?所以我覺(jué)得應(yīng)該是為了美觀吧)

4:就是輸出數(shù)據(jù)集的排序,一般人口統(tǒng)計(jì)學(xué)的信息,我們按照受試者編號(hào)或者入組號(hào)排序就夠了,然后既往病史,不良事件,既往用藥這些listing,我們還得加上開(kāi)始日期和結(jié)束日期。有的統(tǒng)計(jì)師可能不會(huì)加上這些編程備注,但是我們?cè)趯?xiě)程序的時(shí)候,這個(gè)依然是需要注意的一個(gè)點(diǎn)。
然后實(shí)驗(yàn)室檢查那些,我們一般按照subjid,parcat1,paramn,xxdtc,visitnum(visitnum和xxdtc可能要具體項(xiàng)目具體調(diào)換順序),paramn反應(yīng)的順序一般就是CRF上列的檢查項(xiàng)的順序,所以我們一般在做SDTM,ADaM的時(shí)候,就按照CRF上列的檢查項(xiàng)的順序?qū)慡PEC。
還需要注意的一點(diǎn)是,雖然你在數(shù)據(jù)集里面已經(jīng)按照開(kāi)始結(jié)束日期排序了,但是輸出report的時(shí)候發(fā)現(xiàn)明明日期更晚的,卻排在了日期更早的前面,這就是因?yàn)閛rder=data和order=internal的區(qū)別(以前文章寫(xiě)過(guò))
所以大家在輸出report之后,請(qǐng)打開(kāi)report看一看,求你了!不要數(shù)據(jù)集Q上了就完事,不管是main和QC都要檢查一下report。:
4:接著上一條,如果大家數(shù)據(jù)QC完成了,很重要的一個(gè)修養(yǎng)就是打開(kāi)report檢查一下輸出是否正確,1)除了上面的日期問(wèn)題,2)還要檢查一下header是否跟shell一致(這個(gè)目前在數(shù)據(jù)集是Q不出來(lái)的),3)就是檢查一下是否有分頁(yè),因?yàn)榭赡芤驗(yàn)橐豁?yè)放太多了或者某一列很多文本描述導(dǎo)致斷頁(yè)了,所以這也是需要認(rèn)真檢查的一個(gè)點(diǎn)!4)然后一頁(yè)能多放就多放(在不斷頁(yè)的前提下),不要為了不斷頁(yè)數(shù)據(jù)就放半頁(yè),這樣文件會(huì)很大,尤其是LB的,可能打開(kāi)word就花去了大半天。
table的話也是上面的問(wèn)題,然后還得檢查header上的N是否正確,第一列的header(若有)是否加上或者是否寫(xiě)正確,比如說(shuō)SOC/PT等
總結(jié)一下:雖然listing寫(xiě)起來(lái)很簡(jiǎn)單,變量直接從ADaM里面拿,最多就是拼接一下,但是也可以很煩,調(diào)整格式,檢查輸出是一份費(fèi)心費(fèi)精力的事情。但不管怎么樣,你既然寫(xiě)這張listing,那就請(qǐng)做好,務(wù)必寫(xiě)完后打開(kāi)report檢查一下?。。。。。?!小弟在此謝過(guò)了!大哥!