Как вы можете применять ранги к подгруппам в SAS? - PullRequest
0 голосов
/ 11 марта 2012

Отказ от ответственности: это домашнее задание.

У меня есть набор данных SAS:

ID    VAL   YEAR

Мне нужно сгруппировать их в 10 групп по YEAR

Итак, в моем случае годы идут с 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 Ответ

2 голосов
/ 11 марта 2012

Не уверен, что это именно то, что вы хотите. если вы хотите сделать rank с помощью переменной, просто укажите by оператор proc rank. Также убедитесь, что набор данных отсортирован по годам перед выполнением этого.

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