SAS编程-ADaMEfficacy Analysis Flag的两种生成方法
临床试验会针对Efficacy Endpoints进行Efficacy分析,这些分析是针对特定的Efficacy Paramters。纳入Efficacy分析的人群,通常是基线以及基线后至少一次访视值不为空 (With non-missing values at baseline and at least on post-baseine visit)。
在SAP中,分析人群会有明确定义。在ADaM中,会建立特定Flag变量来标识每一个分析人群。例如,Full Analysis Set对应参与随机化或参与入组的人群,对于符合条件的受试者,变量FASFL赋值为“Y”。
1. Efficacy Analysis Flag说明
Efficacy分析是基于Parameter-Level的,即针对受试者的特定Paramter进行。只要特定Paramter满足,基线以及基线后至少一次访视值不为空的条件,就将受试者的这个Paramter纳入分析。对于历时较长或多阶段试验,Efficacy分析可能是分阶段进行。
基线值保存在Base变量中,访视检测值保存在AVAL变量中,只要基线后访视中,有一条记录这两个变量都不为空,即n(base, aval)=2
或者chg ne .
,该受试者的Paramter就满足条件,纳入Efficacy分析。(chg = aval - base)
以一个3期试验举例,该试验主体研究为3年时间,对应的访视值AVISIT为Baeline、Month 12、Month 24、Month 36,对应的AVISITN为0、12、24、36,生成4个Efficacy Flag:
- EFFPFL: Efficacy Parameter-Level Flag
- EPM12FL: Eff Parameter-Level Flag at Month12
- EPM24FL: Eff Parameter-Level Flag at Month24
- EPM36FL: Eff Parameter-Level Flag at Month36
这篇文章介绍两种生成Efficacy Analysis Flag的方法,分别使用Data步和Proc SQL进行实现。
2. 方法1:Data步
获取Efficacy Analysis Flag的整体思路是,在per usubjid per paramcd的维度下,筛选出基线后访视AVAL和BASE值都不为空的记录,将对应的Flag赋值为“Y”,然后再将Flag拼接回原数据集中。
Efficacy分析只会针对特定的Paramter,SAP中会规定好,一般也都有具体条件进行筛选,例如parcat1 = "XXXXX"
,paramcd in ("XX1" "XX2" "XX3")
,举例代码中就不再演示。
Data 步实现的思路是,筛选出符合条件的USUBJID-PARAMCD组合,为其赋上对应的Flag,然后去重,最后拼接回数据集。
演示代码如下:
**effpfl;
data effpfl;
set adxx;
where avisitn > 0 and chg ne.;
effpfl = "Y";
keep usubjid paramcd effpfl;
proc sort nodupkey;
by usubjid paramcd;
run;
**epm12fl;
data epm12fl;
set adxx;
where 0<avisitn<=12 and chg ne.;
epm12fl= "Y";
keep usubjid paramcd epm12fl;
proc sort nodupkey;
by usubjid paramcd;
run;
**epm24fl;
data epm24fl;
set adxx;
where 0<avisitn<=24 and chg ne.;
epm12fl= "Y";
keep usubjid paramcd epm24fl;
proc sort nodupkey;
by usubjid paramcd;
run;
**epm36fl;
data epm24fl;
set adxx;
where 0<avisitn<=36 and chg ne.;
epm36fl= "Y";
keep usubjid paramcd epm36fl;
proc sort nodupkey;
by usubjid paramcd;
run;
**Combine flags above;
data adxx1;
merge adxx effpfl epm12fl epm24fl epm36fl;
by usubjid paramcd;
run;
整个过程,看起来长了些,但是条理清晰,容易理解。
3. 方法2:Proc SQL
获取Efficacy Analysis Flag的整体思路肯定不会变,但是基于自身语法的特性,SQL实现起来比较简洁。
主体程序依旧是左拼接,只不过各个Flag的生成聚合在子查询中,通过group by
以及聚合函数max
实现了去重的功能。
proc sql noprint;
create table adxx2 as
select a.*, b.effpfl, b.epm12fl, b.epm24fl, b.epm36fl
from adxx as a
left join
(
select usubjid, paramcd, "Y" as effpfl,
max(case when avisitn<=3012 then "Y" else " " end) as epm12fl,
max(case when avisitn<=3024 then "Y" else " " end) as epm24fl,
max(case when avisitn<=3036 then "Y" else " " end) as epm36fl
from adxx
where avisitn > 0 and chg ne.
group by usubjid, paramcd
) as b
on a.usubjid = b. usubjid and a.paramcd = b.paramcd
group by a.usubjid, a.paramcd, a.avisitn
;
quit;
若只生成EFFPFL变量,子查询中需添加distinct
选项去重。因为对于保留下来的EFFPFL记录,值都为“Y”,聚合函数会直接保留 1条记录,没有聚合函数,就需要添加去重选项。
SQL程序,浓缩简洁,易读性上差了点。
这里注意一个小点,这个点不常遇到,SQL拼接生成新变量时,新变量名不能在原数据中存在,如果存在会造成赋值失败。
总结
文章介绍了Efficacy Analysis Flag,以及对应的两种生成方式——Data步和Proc SQL。两种方法,各有特点,编程时按自己喜好使用。
感谢阅读, 欢迎关注!
若有疑问,欢迎评论交流!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgkgafg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13