不知道为什么,这两天好几个关注我的,难道是因为我写的那篇《要不要换工作》?但是我是一个SAS程序员作者,重心还是讲SAS和临床知识的,虽然我更喜欢写那些闲聊文章。
废话不多说,今天我们就来讲一下DM domain,DM跟SE,SV,我觉得可以算是所有domain里的大哥或者父亲,其他的domain相当于小弟和儿子。而且开始写SDTM,一般就是先写DM,SV,SE,因为其他domain需要用到DM中的rfstdtc,进行XXdy变量的判断;也需要SV里面的visit和visitnum;epoch变量也需要SE来进行判断。
DM domain记录的一般就是你的身份信息,包括性别,年龄,民族,种族,国家,试验分组等等,有点查户口的意思。
写DM domain有一个很重要的原则就是你最终输出的DM数据集,一个受试者只有一条记录。
如果你最终输出的数据集发现一个人有多条数据,要么是你在数据集进行拼接的时候出现多对多,要么是某一数据集没有nodupkey,尤其是新手很容易出现这种错误。
这里介绍DM中最重要的几个变量:
①:RFSTDTC:受试者参照开始日期/时间
它们讲的太抽象,听我的,就是等于第一次给药日期,也就是你进行什么药的临床试验,一般就是这个药第一次注射或者吃下去的时间。
求这个变量,一般会有专门的一个raw.ec数据集(SDTMIG上是没有的,它又不是一个域,只是一个源数据集)收集给药的时间,一般会具体到小时分钟。而且会有多次给药,总不可能进行试验的时候只吃一次吧。会分好多天,好几个周期的,所以你就得求出最早的吃药时间。
方法嘛你可以用data步,先根据受试者,给药时间排序,然后用if first.subjid来求出最早给药日期,在这个过程中,拼接数据集就可能出现多对多,所以得耐心一点。
也可以用proc步,min(ecstdat)求出,因为没有数据集,就不写程序了,只讲思路方法。
这里顺便讲一下这个变量,记得当初一开始学SDTM,RFSTDTC和RFXSTDTC 感觉长得一样,后面就比前面多了一个“X”,经常不理解,项目做多了,就理解了。看我红框的部分,RFXSTDTC 是试验方案指定的,但是一般来说也等于最早的给药日期。
②:arm、armcd、actarm、actarmcd
这个arm初学很抽象,怎么“手臂”也用上了,还来个“实际手臂”,实际上这个arm是“分组”的意思:
也就是,比如你进行临床试验,一般都会分好几个组别,例如0.05mg/kg,0.1mg/kg,0.25mg/kg...这些剂量组就是对应的arm,可能你对0.05mg/kg的剂量组设置为armcd="S1";对0.1mg/kg的剂量组设置为armcd="S2"....,armcd就相当于一个编码,把对应的组别用一个代号代表。
那actarm呢?我自己的理解就是arm,armcd是按照试验方案计划分配的组别,如果出现了特殊情况(我不知道会有什么特殊情况),进行剂量调整,那么这个就是实际分组。但实际上我看项目中他们的值一般都相等,可能没有啥特殊情况。
就讲这么多吧,还没吃饭呢!给自己煮了一碗面条。一下班回来就写这个,现在项目差不多都完成了,今天突然没事做感觉有点不习惯,于是向领导申请有啥活干(要不然又说工时写少了)。但是感觉还是不够饱和,让我猝死吧!
我很好奇有多少人习惯给别人发消息的时候问“在吗”(虽然图中没有),我想说你有事的话直接把事情说出来,要是你给朋友发一个“在吗”又不讲什么事,朋友还以为你向他借钱呢?他回还是不回啊?不管是工作还是生活,我给别人发消息都是称呼加上问题,有事说事,简洁明了。
还是那句话,想加我私人联系方式的,自己翻看我以前的文章,有几次发布了。以前(大学毕业前)我会很开心别人加我,也很乐意帮别人解答问题。但是现在多一事不如少一事,你又不给我发钱又不跟我谈恋爱或者骗我钱(我也没钱可骗),加我干嘛?我还得花时间回复你问题,凭啥子?有问题在简书下面评论啊,我都会把文章同步到简书的。阿里嘎多