首页 > 解决方案 > SAS数据步骤是否可以在变量更改时添加记录计数列?

问题描述

我有一张表,其中包含日期,并且成员会随着时间而变化。我想知道成员何时开始和结束。如果成员开始和结束,然后重新启动,则需要使用不同的指示器。

我所拥有的样本(对不起,我不知道如何在这里制作表格):

member  yyyymm
Jim  201603
Jim  201606
Jim  201609
Bob  201709
Bob  201712
Jim  201806
Jef  201806
Jef  201809

我尝试了一个 proc sql 语句,它找到了最小和最大日期,但是如果成员重新启动,则最大日期是错误的(下面的代码 A)。我还尝试了一个数据步骤,说它没有正确排序(下面的代码 B)

代码 A

proc sql;
create table tst as
select
member,
max(yyyymm) as effective_until,
min(yyyymm) as effective_from
from tbl
group by 1,2;
quit;

代码 B

data tst;
count + 1;
by member;
if first.member then count = 1;
run;

我所希望的:

member  yyyymm  id
Jim  201603  1
Jim  201606  1
Jim  201609  1
Bob  201709  2
Bob  201712  2
Jim  201803  3
Jef  201806  4
Jef  201809  4

标签: sas

解决方案


proc sort data=have;
  by yyyymm member;

data want;
  set have;
  by yyyymm member;
if first.member then id+1;
run;

推荐阅读