免責聲明:這是功課。如何將等級應用於SAS中的子羣?
我有一個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
作爲一個變量,它不附加任何數據。 有什麼想法?
既然您聲明這是作業,您可能想了解爲什麼您的DO循環代碼不起作用。 DO/TO - END是特定於DATA STEP的代碼。對於您的示例,您將需要使用MACRO邏輯,例如%DO /%TO - %END。此外,「1980 + i」將需要更改爲「1980 +&i」。最後,所有這些都需要在宏定義中編寫。羅比提供的答案效率更高,但很高興看到您也在考慮其他選項。 – RWill 2012-03-13 15:50:46