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