繁体   English   中英

SAS:当后续行的计数器为 0 时插入数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM