一位读者问了一个问题:
在supp-补充域中,我们一般是通过supp域的-SEQ与父域的-SEQ+USUBJID 来关联,但是父域的-SEQ变量为数值型,为何补充域要为字符型?
当时我的第一反应就是这个问题就像问1+1为什么等于2?人家IG上定义了这个变量是字符型,我们做成字符型就行了,如果非要问为什么不能做成数值型,那么我感觉IG上的每一个变量都可以问一遍,比如usubjid为什么不做成数值型,--SEQ为什么非要做成数值型,我不能做成字符型吗?
就像学英语一样,很多语法从创建之初就是这样规定的,你要问为什么要这样做,那得追溯到祖宗去了,所以很多东西,你知道怎么用就可以了,然后注意他们规定的格式就可以了。
上面是我一开始心里的嘀咕。
但是后面我一想,应该没那么简单,虽然从我一开始工作起,都是用parent domain的seq作为IDVARVAL的值(DM除外)。既然这样,为什么不设置成数值型呢,还不用转换。
一:
用--SEQ作为IDVAR和IDVARVAL的值是我们默认的做法,但是不是说只能这样做,这里我们顺便复习一下SUPP数据集:
SDTM不允许添加非标准标量,那么这时候SUPP数据集就被用来收集非标准变量,并通过某些变量和parent domain建立起联系。其中QNAM代表修饰变量名称;QLABEL代表修饰变量标签;QVAL就代表修饰变量的值;QORIG就代表值的来源。
对于同一受试者,同一IDVAR和IDVARVAL,QNAM的值不能一样,要不然大家想想做到ADaM的时候,把SUPP转置之后(QNAM就是一个变量了),如果QNAM都是同一个,转置之后的变量的值该取哪一个呢?所以要保证同一受试者,同一IDVAR和IDVARVAL下QNAM的唯一性。
那么回到IDVAR,在NOTE里面提到并不是只可以用--SEQ作为IDVAR,还可以用其他变量,比如--GRPID,甚至--CAT这个变量。只不过我们日常工作中通常使用--SEQ变量和值分别作为IDVAR和IDVARVAL,可能就误以为只能这样了,所以要改变这样的偏见。
从IG上举的例子可以看到,IDVARVAL不仅仅能存放“数值型”的值,还可以存放字符型的值。如果IDVARVAL是数值型的话,那么上面提到的这些情况就存放不了。
二:
很多非标准变量以及对应的值,不一定是从CRF上收集的,有些可能是我们Assigned或者Derived来的,这时候的QORIG="Assigned" or QORIG="Derived"。对于客观的数据,QEVQL可以为空;对于主观的数据(QORIG="Assigned" or QORIG="Derived"),这时候我们需要添上对应的评估者,相当于是谁“创造出”这条记录,比如QEVQL="SPONSOR"。这个也有可能忽略。
三:
QVAL不能为空,这个对于初学者来说是挺容易犯得一个错