Sas 基于两个变量创建特定索引

Sas 基于两个变量创建特定索引,sas,Sas,Supose我想在SAS上计算一个新变量,该变量是客户机订单的索引(第一、第二等)。 我有两个原始变量:客户ID和购买日期,在这些行上(我也有其他变量,但它们不会更改新变量): 新的var如下所示: CLIENT_ID DATE_OF_PURCHASE ITEM ORDER 12345 11NOV2013 A 1 12345 11NOV2013 B 1 12345

Supose我想在SAS上计算一个新变量,该变量是客户机订单的索引(第一、第二等)。 我有两个原始变量:客户ID和购买日期,在这些行上(我也有其他变量,但它们不会更改新变量):

新的var如下所示:

CLIENT_ID     DATE_OF_PURCHASE     ITEM     ORDER 
12345         11NOV2013            A        1
12345         11NOV2013            B        1
12345         11NOV2013            C        1
12345         22DEC2013            A        2
67890         17OCT2013            A        1
67890         17OCT2013            B        1
88888         07NOV2013            A        1
88888         28NOV2013            A        2
88888         28NOV2013            C        2
也就是说,客户12345在2013年11月11日下了一个订单,购买了3件物品,在2013年12月22日下了一个订单,购买了一件物品。等等


有没有简单的方法来创建这个新变量?

先使用。使用“按组”来确定如何设置顺序

data have;
informat date_of_purchase DATE9.;
input CLIENT_ID     DATE_OF_PURCHASE     ITEM $;
datalines;
12345         11NOV2013            A
12345         11NOV2013            B
12345         11NOV2013            C
12345         22DEC2013            A
67890         17OCT2013            A
67890         17OCT2013            B
88888         07NOV2013            A
88888         28NOV2013            A
88888         28NOV2013            C
;;;;
run;

data want;
set have;
by client_id date_of_purchase;
if first.client_id then ordernum=0;
if first.date_of_purchase then ordernum+1;
run;
data have;
informat date_of_purchase DATE9.;
input CLIENT_ID     DATE_OF_PURCHASE     ITEM $;
datalines;
12345         11NOV2013            A
12345         11NOV2013            B
12345         11NOV2013            C
12345         22DEC2013            A
67890         17OCT2013            A
67890         17OCT2013            B
88888         07NOV2013            A
88888         28NOV2013            A
88888         28NOV2013            C
;;;;
run;

data want;
set have;
by client_id date_of_purchase;
if first.client_id then ordernum=0;
if first.date_of_purchase then ordernum+1;
run;