[英]SAS: Insert data when counter is 0 for the upcoming rows
我需要在计数器为 0 时找到 min_week,并且该行的周值应该继续,直到计数器再次变为 0。
以下是我正在寻找的 Output 的示例:
在我当前使用以下代码的 output 中,我得到的 output 为:
proc sql;
create table week_min_1 as
select t1.*, t2.week as min_week from emp_table t1
left join (select * from emp_table where counter = 0 group by emp having sequence = min(sequence)) t2
on t1.emp= t2.emp
;
quit;
让我们首先创建您的样本数据:
data have;
input Emp $ Sequence Week Counter;
datalines;
a001 1 2 0
a001 2 4 1
a001 3 8 2
a001 4 12 3
a001 5 24 0
a001 6 36 1
a001 7 48 2
a001 8 52 3
;
run;
现在我们应该对数据进行排序。 在此示例中,它已经排序,但安全总比遗憾好。
proc sort data=have;
by Emp Sequence;
run;
通过一个简单的 if 语句,我们可以确定那些 min_week 值。
data have2;
set have;
if counter = 0 then do;
min_week = Week;
end;
run;
使用更新语句,我们将这些值放在每一行中。
data want;
update have2 (obs=0) have2;
by Emp;
output;
run;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.