如何为一组变量分配ID

时间:2012-11-30 19:14:04

标签: sas

我有一个面板数据集,需要根据(Year,LoadPort,DischargePort)的唯一组合为变量组创建一个ID。我想在数据集中保留其他变量,但不需要识别该组。例如:

Year LoadPort  DischargePort ID
2007 ARZEW     LOOP TERMINAL 1
2008 ARZEW     LOOP TERMINAL 1
2011 RAS TANURA ZHONGSHAN    2
2010 RAS TANURA ZHONGSHAN    2

我需要创建最后一列。这是我尝试过的,但它给了我无意义的结果:

proc sort data=data.benchmark5;
by loadport dischargeport year;
run;

data data.benchmark6;
   set data.benchmark5;
   retain ID;
   by loadport dischargeport year;
   if first.year then ID = 0;
   ID = ID + 1;
   run;

2 个答案:

答案 0 :(得分:1)

你很亲密;只在first.year上增加你的ID变量:

data data.benchmark6;
   set data.benchmark5;
      by loadport dischargeport year;
   retain ID 0;
   if first.year then ID = ID + 1;
run;

答案 1 :(得分:0)

这将为您提供样本显示的ID。

data data.benchmark6;
 set data.benchmark5;
  if loadport^=lag(loadport) or DischargePort^=lag(DischargePort) then ID+1;
    else ID+0;
 run;