Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过两列SAS创建行号列_Sas - Fatal编程技术网

通过两列SAS创建行号列

通过两列SAS创建行号列,sas,Sas,我想根据两列的值向SAS数据集添加一个行号列 类型_1和类型_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

我想根据两列的值向SAS数据集添加一个行号列

类型_1和类型_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_1
type_2
连接起来,上面的代码可以工作,但我希望能够做到这一点,而无需创建一个helper列。有没有办法更改数据步骤以使其正常工作?或者是否有我不知道的另一个SAS函数可以实现这一点?

如果要在类型1或类型2发生任何更改时重置它,则只需使用列表中的最后一个变量;先前变量的任何更改都将触发
第一个变量的更改

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