0

我有一个面板数据集,需要根据(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;
4

2 回答 2

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;
于 2012-11-30T20:35:51.090 回答
0

这将为您提供示例显示的 ID。

data data.benchmark6;
 set data.benchmark5;
  if loadport^=lag(loadport) or DischargePort^=lag(DischargePort) then ID+1;
    else ID+0;
 run;
于 2012-11-30T20:12:25.227 回答