我的数据集a经过sort分类后成为如下情况:
XM XX
A 王西初中
B 王西初中
C 王西初中
·······
········
M 王西初中
A01 后屯初中
A02 后屯初中
A03 后屯初中
········
········
L03 后屯初中
A001 中心初中
A002 中心初中
········
········
Z002 中心初中
········
········
········
我想生成一个变量BM,对XX相同的所有观测值都赋予相同的值,如排在最前面的XX为“王西初中”的所有观测都赋值为1,后面的XX为“后屯初中”的所有观测,赋值为2。再后面的中心初中的所有观测,都赋值为3。依次类推。
我原来的做法是:
proc sort data=a;
by xx;
run;
DATA a;
set a;
by xx;
retain idx;
if first.xx then idx=1;
else idx+1;
run;
data b;
set a;
where idx=1;
run;
data b;
set b;
by idx;
retain BM;
if first.idx then BM=1;
else BM+1;
run;
proc sql;
create table c as select * from a left join b on a.xx=b.xx;
quit;
这样做太麻烦了。感觉应该存在一个循环命令直接在数据集a内就能生成BM。所以,跪求高手指点迷津。跪求。跪求。谢谢。谢谢。