基于2个变量创建特定索引

时间:2014-01-08 18:52:09

标签: sas

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

CLIENT_ID     DATE_OF_PURCHASE     ITEM 
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

新的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在11NOV2013订购了一个订单,在22DEC2013购买了另一个订单,购买了一个商品。等等。

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

1 个答案:

答案 0 :(得分:3)

使用FIRST。与BY组一起确定如何设置订单。

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;