通过两列SAS创建行号列

时间:2017-11-29 19:15:50

标签: sas

我想根据两列的值为SAS数据集添加行号列。

Type_1和Type_2列就是我所拥有的,行号是我需要的。

Type_1  Type_2  Row Number
A       1       1
A       1       2
A       2       1
A       2       2
B       1       1
B       2       1
B       2       2
B       3       1
C       1       1
C       1       2
C       2       1
C       3       1
C       4       1
C       4       2

我有这个代码来计算一个列值的行:

data work.want;
set work.have;
rownumber + 1;
by type_1 notsorted;
if first.type_1 then rownumber=1;
run;

但我不知道如何将其扩展为能够按多列标准进行分组。我知道我可以连接type_1type_2并且上面的代码可以工作,但我希望能够在不创建帮助列的情况下完成它。有没有办法改变数据步骤才能工作?或者是否有其他我不知道的SAS功能可以实现这一目标?

1 个答案:

答案 0 :(得分:2)

如果要在TYPE_1或TYPE_2中的任何更改时重置它,那么只需使用列表中的最后一个变量;先前变量的任何更改都将触发FIRST变量的更改。

data work.want;
  set work.have;
  by type_1 type_2 notsorted;
  rownumber + 1;
  if first.type_2 then rownumber=1;
run;