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购买了另一个订单,购买了一个商品。等等。
有没有简单的方法来创建这个新变量?
答案 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;