1
我有一个名为* term_table *包含下面列在每个观测变量的值脱身宏变量
补偿,term_type,期限,评分表,排名
我去通过每个观察和每个obs,我想将变量rank的值存储到一个名为'curr_r'的宏变量中。下面我创建的代码不起作用
Data Work.term_table;
input Comp $
Term_type $
Term $
Score
Rank
;
datalines;
comp1 term_type1 A 1 1
comp2 term_type2 A 2 10
comp3 term_type3 A 3 20
comp4 term_type4 B 4 20
comp5 term_type5 B 5 40
comp6 term_type6 B 6 100
;
Run;
%local j;
DATA tmp;
SET term_table;
LENGTH freq 8;
BY &by_var term_type term;
RETAIN freq;
CALL SYMPUT('curr_r', rank);
IF first.term THEN DO;
%do j = 1 %to &curr_r;
do some thing
%end;
END;
RUN;
你能帮我解决这个问题
非常感谢
红
感谢:
排名的每个值存储在宏变量,下面将这样做。在term_table中,假设术语'A'具有RANK的3个值:1,10,20。现在假定我处于obs term = A和rank = 10。我需要做一个循环:“做J = 2到10”。如果我的学期= A,等级= 20,我需要做一个循环:“Do j = 11 to 20)。这意味着我应该存储前一个等级和每个obs的当前等级来完成循环。我有任何建议Hung – 2012-01-13 13:13:02
嗨,是的,最后我发现我不需要宏变量来解决我的问题,谢谢了很多 – 2012-01-13 13:31:46
很高兴帮助...我用一些示例数据更新了答案,如果需要的话更改。您的原始附加问题,它会使答案变得有意义。示例数据使得它更容易帮助... – 2012-01-13 14:41:30