如何在SAS中将等级应用于子组?

时间:2012-03-11 05:17:02

标签: loops sas rank

免责声明:这是作业。

我有一个SAS数据集:

ID    VAL   YEAR

我需要按YEAR

将它们分成10组

因此,在我的情况下,这些年份从1980年到2000年,每年都有很多行。

如果我想对整套进行排名,我会这样做:

proc rank groups=10 data=foo out=bar;
var val; ranks s1; run;

但这并没有按年份分开。所以我试着将它放入DO循环和APPEND每年的排名数据:

do i=0 to 20;
data z; set l;
if year = 1980 + i;
keep id year val;
run;

proc append  base=l data=z;
run;
end;
run;

但它不会将i识别为变量,也不会附加任何数据。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

不确定这是否正是您想要的。如果您想通过变量执行rank,只需声明by的{​​{1}}语句。同时确保数据集在执行此操作之前按年排序。

proc rank