freerunning_sky 发表于 2014-7-17 09:16 
您好,再向您请教一下。假如A_cate里面的属性有很多,比如Attr1,Attr2,Attr3,Attr4...
就不想总是if scan(A_cate,2,"_")="Attr1" then Attr1_num=scan(A_cate,-1,"_");这样进行判断,因为很产生很多重复代码,想像类似下面这样:
%let AttrList=Attr1 Attr2 Attr3 Attr4;
data a_output;
set a_input;
array AttrList{*} &AttrList;
do i=1 to dim(AttrList);
if scan(A_cate,2,"_")="AttrList{i}" then do;
Comm{i}_num=scan(A_cate,4,"_")*1;
Comm{i}_level=scan(A_cate,-3,"_")*1;
Comm{i}_level1=scan(A_cate,-1,"_")*1;
end;
end;
但是上面的代码报错,Comm{i}_num数组这样写不行,希望您给个类似的程序可以实现这个功能,非常感谢~~