欢迎光临散文网 会员登陆 & 注册

SAS 程序分享:获取逻辑库中的全部日期数据

2023-07-11 20:30 作者:SAS骆豪  | 我要投稿

在一项临床试验中,试验数据被上传到 EDC(临床试验数据采集系统)中,这些数据的后台管理者被称为 DM(数据管理员)。在试验数据间断性更新时,他们常常需要进行这么一项工作:将受试者新录入的日期数据与受试者的研究结束日期进行比较,若新录入的日期晚于研究结束日期,则新录入日期很有可能有误,需要进一步检查。

要完成这样的工作,DM 常常将逻辑库中全部的日期数据堆叠起来,处理为一个受试者多条日期的数据结构,然后再通过表查询技术,获取受试者的研究结束日期,完成最终的数据比较。

堆叠日期数据示意图

要获取逻辑库中的全部日期数据,然后再将它们堆叠成一个新的数据集,本文给出了一种基于字典数据集和数据驱动编程技术的做法:

以上代码片段创建了两个示例数据集:VS 和 EX,它们各自拥有一些日期形式的变量。我特意为其中的一部分变量设置了“DAT”作为名称后缀,这是多数 EDC 对日期变量的设置。接下来,程序执行了以下动作:

  1. 访问字典数据集,筛选 SASUSER 逻辑库中,名称含有“DAT”后缀的变量名列表;

  2. 若筛选结果非空,尝试删除数据集 work.all_date,为接下来的数据集合并做准备;

  3. 遍历变量列表,每次迭代都生成一个数据步程序,该数据步获取当前变量所在数据集名,当前变量名,数据集中的行号,以及该行号下的变量值。该数据步程序被执行后将生成一个结果数据集;

  4. 第3步生成的结果数据集合并到数据集 work.all_date 中;

  5. 重复第3至4步,直到遍历完整个变量列表;

程序执行之后,将创建数据集 work.all_date,该数据集中的变量 _dat_ 是逻辑库中全部以“DAT”作为名称后缀的数据堆叠的结果,subjid 是受试者 ID 变量,而 _dsname_、_varname_、_rownum_ 则是溯源变量,它们清楚地记录了数据的来源。

该做法思路直接,速度较快,但对变量名的形式有限制。若原始数据中的变量名没有明显规律,又该如何处理呢?请看下集,通过正则表达式或输出格式判断日期数据!

SAS 程序分享:获取逻辑库中的全部日期数据的评论 (共 条)

分享到微博请遵守国家法律