Pinnacle 21-Issue:FASEQ重复值的处置惩罚

源码 2024-9-17 00:28:37 95 0 来自 中国
在使用P21E举行SDTM数据Validation时,FA数据集大概会出现如许的issue:
[indent]SD0005: Duplicate value for FASEQ variable.
[/indent]在SDTM数据集中,对受试者的每一条记载来讲,--SEQ变量应该是独特的、唯一的。关于这一点,不管是手动编程,照旧各家公司的宏步伐,应该都会处置惩罚好。
[b]这里出现这个Issue的缘故因由是,P21E在Validate SDTM数据集时,会将全部FA数据集综合在一起举行查抄,这就导致一个受试者的一个FASEQ值出现多次[/b]。
这个标题标处置惩罚方法不复杂,FA数据集按照肯定顺序依次天生,后一个数据集中受试者的FASEQ取值,从前一个数据集中该受试者[b]最大FASEQ值+1[/b]起计数。如许就能包管,举行Validation时,对某个受试者来讲,FASEQ的值是不会重复的。(固然,+恣意正整数都可以制止这个Issue)
基于以上方法,提供一个SAS编程实现思绪:
[indent][list=1]
[*]两个FA数据集,按通例思绪从数值1开始天生FASEQ变量;
[*]获取前一个数据集中的每一个受试者的FASEQ最大值;
[*]后一个数据集以USUBJID为关键变量,左拼接获取最大值;
[*]后一个数据集中FASEQ加上拼接获取的最大值。
[/list][/indent]创建2个模仿数据集,都包罗从数值1开始的FASEQ变量:
data class1;  set sashelp.class;  if _n_ <=2 then do;    do FASEQ_ = 1 to 2;      output;    end;  end;run;data class2;  set sashelp.class;  if _n_ <=4 then do;    do FASEQ_ = 1 to 3;      output;    end;  end;run;这两个数据集的内容如下:
1.png SAS步伐实现的效果是,在Class2中,Alfrd与Alice这两位受试者的FASEQ变量都会加上Class1数据集中的最大值2。
演示步伐如下:
proc sql norpint;   create table class2_final as    select a.*, b.max, sum(faseq_, b.max) as FASEQ   from class2 as a    left join    (select name, max(faseq_) as max       from class1       group by name    ) as b    on a.name = b.name    order by name, faseq  ;run; 3.png 步伐中表明一点,后一个数据集FASEQ变量与最大值求和时,使用sum函数是为了规避与空值相加照旧空值的情况。如果倒霉用sum函数的话,还必要用条件语句举行判定max是否为空。
如许处置惩罚就可以规避Issue SD0005,各家公司也可以思量将这个功能添加到SEQ宏步伐中。
[b]感谢阅读, 接待关注:SAS茶谈!
如有疑问,接待品评交换!
接待点赞、转发![/b]
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 14:20, Processed in 0.173288 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表