這篇文章介紹SDTM中SV數(shù)據(jù)集編程的思路耙考。
SV 是關(guān)于受試者訪視時(shí)間的表,綜合了所有分散在其它包含訪視變量(VISITNUM山卦,VISIT账蓉,VISITDY)的域中的信息。一般來講,SV數(shù)據(jù)集的生成,是需要對(duì)受試者每一個(gè)訪視涉及到的所有時(shí)間記錄進(jìn)行排序和篩選處理的鄙早,最早的時(shí)間作為該訪視的開始時(shí)間限番,最晚的時(shí)間作為該訪視的結(jié)束時(shí)間扩灯。
輸入信息
具體到SV的編程惧磺,我們需要兩個(gè)方面的信息:
- 包含訪視信息(時(shí)間窗)的原始數(shù)據(jù)集;
- 時(shí)間窗對(duì)應(yīng)各訪視的查詢表番捂。
原始數(shù)據(jù)集
用于生成SV的原始數(shù)據(jù)集,必須包含具體的訪視信息以及對(duì)應(yīng)的時(shí)間信息犁河。通常鳖枕,我們稱這個(gè)“訪視信息”為時(shí)間窗,在原始數(shù)據(jù)集中吸奴,一般是FOLDER這一類變量则奥。時(shí)間窗的內(nèi)容一般是簡(jiǎn)寫唱矛,例如,“SCR”,“W1”包个,“W2”……
在整理原始數(shù)據(jù)集時(shí),有一個(gè)難點(diǎn)天通。在復(fù)雜的試驗(yàn)中,包含時(shí)間信息的數(shù)據(jù)集比較多歧蒋,整理的過程中可能會(huì)有遺漏,特別是在人工一個(gè)一個(gè)查看的情況下序臂。這里分享一個(gè)小技巧咸灿,時(shí)間變量的名稱一般都是比較規(guī)律的,比如包含DT兩個(gè)字母。我們可以先把含有這兩個(gè)字母變量的原始數(shù)據(jù)集匯總在一起,然后再進(jìn)行人工篩選碍庵。可以參考以下代碼:
proc sql noprint;
create table dt as
select memname, name
from dictionary.columns
where libname = "RAW" and index(name, "DT");
quit;
利用SAS字典(dictionary.columns)映企,篩選出包含DT變量的原始數(shù)據(jù)集,然后人工核查篩選結(jié)果挣菲。這里“DT”只是舉例抚岗,不同公司宣蔚、不同項(xiàng)目亩冬,時(shí)間變量的特征可能不同营袜,具體情況具體分析。
時(shí)間窗對(duì)應(yīng)各訪視的查詢表
在原始數(shù)據(jù)集匯總后荚板,我們會(huì)對(duì)時(shí)間窗信息進(jìn)行處理啸驯。在簡(jiǎn)單的臨床試驗(yàn)中针姿,時(shí)間窗信息與具體的訪視是一一對(duì)應(yīng)的;在復(fù)雜試驗(yàn)中,可能出現(xiàn)多個(gè)時(shí)間窗對(duì)應(yīng)單個(gè)訪視的情況壁晒。
根據(jù)查詢表,我們將時(shí)間窗信息轉(zhuǎn)化為具體訪視歹茶,對(duì)每個(gè)受試者的每個(gè)訪視的時(shí)間變量進(jìn)行排序,選出最早和最晚的時(shí)間作為SVSTDTC、SVENDTC的值禽作。有的公司有專門的宏進(jìn)行處理萍程;若要手動(dòng)編程,用Data步排序處理或者SQL都可以實(shí)現(xiàn)潮尝,個(gè)人覺得SQL比較方便快捷一點(diǎn)(使用Max, Min匯總函數(shù))。
最后談一點(diǎn),一般SDTM數(shù)據(jù)集中的時(shí)間變量都要求是ISO8601格式型凳,而原始數(shù)據(jù)集中的收集的時(shí)間變量可能是其他格式,需要提前處理好往弓。
data test;
dt_raw = "21 FEB 2021";
svdtc = put(input(compress(dt_raw),date9.),e8601da.);
run;
若有疑問疏唾,歡迎評(píng)論區(qū)留言討論。