第一个问题关于输出宏变量的:
先用proc sql产生了一些宏变量:
proc sql noprint;
select count(distinct name) into:nid from summary where name^="ID";
select name into :id1-:id%left(&nid) from summary where name^="ID";
quit;
现在想得到最后一个变量名,用%put &&id%left(&nid)不能得到正确的结果:
%put &&id%left(&nid) ;
WARNING: Apparent symbolic reference ID not resolved.
&id3
而用下面两步就可以:
%let maxn=%left(&nid);
%put &&id&maxn.
A3810_gg4
请问怎么能一次得到?
=========================
第二个问题关于临时数组的应用:
%do i =1 %to &nid;
%let arr_r =&arr_r pre_&i._[i];
%end;
data data;
set raw_data end =Eof;
...
%do i =1 %to &nid;
array pre_&i._[&n_obs.] _temporary_;
pre_&i._[_n_] =&&id&i.;
%end;
if Eof then do;
%do i =1 %to &nid;
call sortn(of pre_&i._[*]);
%end;
do i =1 to &n_obs.;
value =mean(of &arr_r);
output;
end;
end;
...
run;
请问这里面:_[i]代表什么意思?_[*]代表所有数组元素吗?再就是这里为什么可以
mean(of &arr_r)这么用?记得以前用call sortn(of a b c)都是每个row排的。
多谢了。如果京剧大师能点拨一下,那感激不尽。