首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双道环填充上次访问中丢失的AVAL记录

双道环填充上次访问中丢失的AVAL记录
EN

Stack Overflow用户
提问于 2022-10-22 14:07:46
回答 1查看 19关注 0票数 0

我正在为一个数据集创建一个参数,对于每个结果(AVAL)都有一个特定的策略(复合策略2)。对于这一次访问,我需要对上次访问(DTYPE=LOV)中的AVAL进行估算(在这种情况下,早期终止,如果在该访问中存在AVAL,我需要将该AVAL用于先前缺少AVAL的访问。我的问题是,我如何做一个双道循环来实现这一点,并使缺失的AVAL记录在早期终止时就与AVAL一起填充,但不覆盖任何在AVAL存在的访问。下面是我当前数据集的片段和我想要的输出

代码语言:javascript
复制
input  PARAMCD $ STRATEGY :$30. DTYPE $ SUBJID $ VISIT :$30. AVAL :8.; 
infile datalines dlm = '|';
datalines;
TOTEDPS1|Composite strategy 2|LOV|1001|Week 2|61.2
TOTEDPS1|Composite strategy 2|LOV|1001|Week 4|
TOTEDPS1|Composite strategy 2|LOV|1001|Week 8|
TOTEDPS1|Composite strategy 2|LOV|1001|Week 12|
TOTEDPS1|Composite strategy 2|LOV|1001|Week 16|
TOTEDPS1|Composite strategy 2|LOV|1001|Early Termination|43.5
TOTEDPS1|Composite strategy 2|LOV|1002|Week 2|16
TOTEDPS1|Composite strategy 2|LOV|1002|Week 4|
TOTEDPS1|Composite strategy 2|LOV|1002|Week 8|
TOTEDPS1|Composite strategy 2|LOV|1002|Week 12|
TOTEDPS1|Composite strategy 2|LOV|1002|Week 16|
TOTEDPS1|Composite strategy 2|LOV|1002|Early Termination|6.6
;
run;

data want;
input  PARAMCD $ STRATEGY :$30. DTYPE $ SUBJID $ VISIT :$30. AVAL :8.; 
infile datalines dlm = '|';
datalines;
TOTEDPS1|Composite strategy 2|LOV|1001|Week 2|61.2
TOTEDPS1|Composite strategy 2|LOV|1001|Week 4|43.5
TOTEDPS1|Composite strategy 2|LOV|1001|Week 8|43.5
TOTEDPS1|Composite strategy 2|LOV|1001|Week 12|43.5
TOTEDPS1|Composite strategy 2|LOV|1001|Week 16|43.5
TOTEDPS1|Composite strategy 2|LOV|1001|Early Termination|43.5
TOTEDPS1|Composite strategy 2|LOV|1002|Week 2|16
TOTEDPS1|Composite strategy 2|LOV|1002|Week 4|6.6
TOTEDPS1|Composite strategy 2|LOV|1002|Week 8|6.6
TOTEDPS1|Composite strategy 2|LOV|1002|Week 12|6.6
TOTEDPS1|Composite strategy 2|LOV|1002|Week 16|6.6
TOTEDPS1|Composite strategy 2|LOV|1002|Early Termination|6.6
;
run;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-22 15:48:23

对于任何有兴趣的人,我想出了一个解决办法

代码语言:javascript
复制
data want;
do _n_ = 1 by 1 until(last.usubjid);
  set have;
  by usubjid;
  if visit ='Early Termination' and not(missing(aval)) then last_non_missing = aval;
end;
do _n_ = 1 to _n_;
  set have;  
  aval =coalesce(aval,last_non_missing);
  output;
end;
drop last_non_missing;
run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74164245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档