假设有以下内容:
data DB;
input ID :$20.;
cards;
0001
0001
0002
0003
0003
0004
0004
0004
;
并且您知道 ID 是根据标准排序的。 有没有办法获得以下内容?
data DB1;
input ID :$20. Index;
cards;
0001 1
0001 2
0002 1
0003 1
0003 2
0004 1
0004 2
0004 3
;
换句话说,我想根据每个重复ID的顺序(按ID组)添加一个增量数字索引。
提前谢谢您
这是最佳数据步骤三重奏的一个很好的例子:按组处理、
first.
和求和语句。这个例子是使用它的最好的介绍之一。代码如下:
data want;
set db;
by id;
if(first.id) then index=0;
index+1;
run;
这就是它的作用:
index+1
是以下代码的快捷方式:
data want;
set have;
retain index;
index = index+1;
run;
sum 语句
index+1
自动递增一个值并保留该值。请记住,SAS 默认情况下会在读取每一行时使用 set
语句自动重置变量的值。由于我们不想重置索引并继续递增它,因此我们可以使用 sum 语句无限期地递增一个值,直到我们决定重置它。