Вы можете использовать PROC RANK в SAS для вычисления ранга одной или нескольких числовых переменных.
Вот четыре наиболее распространенных способа использования этой процедуры:
Метод 1: ранг первой переменной
proc rank data =original_data out =ranked_data;
var var1;
ranks var1_rank;
run ;
Метод 2: Ранжирование одной переменной по группе
proc rank data =original_data out =ranked_data;
var var1;
by var2;
ranks var1_rank;
run ;
Метод 3: ранжировать одну переменную в процентили
proc rank data =original_data groups =4 out =ranked_data;
var var1;
ranks var1_rank;
run ;
Метод 4: Ранжирование нескольких переменных
proc rank data =original_data out =ranked_data;
var var1 var2;
ranks var1_rank var2_rank;
run ;
В следующих примерах показано, как использовать каждый метод со следующим набором данных в SAS:
/\*create dataset\*/
data original_data;
input team $ points rebounds;
datalines ;
A 25 10
A 18 4
A 18 7
A 24 8
B 27 9
B 33 13
B 31 11
B 30 16
;
run ;
/\*view dataset\*/
proc print data =original_data;

Пример 1: переменная первого ранга
В следующем коде показано, как создать новую переменную с именем points_rank , которая ранжирует очки, набранные каждой командой:
/\*rank points scored by team\*/
proc rank data =original_data out =ranked_data;
var points;
ranks points_rank;
run ;
/\*view ranks\*/
proc print data =ranked_data;

Команда, набравшая наибольшее количество баллов, получает высший рейтинг, а команда с наименьшим количеством баллов получает низший рейтинг.
Любому равенству в набранных очках присваивается средний рейтинг. Например, строки с первым и вторым наименьшими баллами получают ранг 1,5, поскольку это среднее значение 1 и 2.
Обратите внимание, что вы можете вместо этого использовать оператор по убыванию , чтобы присвоить команде с наибольшим количеством очков самый низкий ранг:
/\*rank points scored by team in descending order\*/
proc rank data =original_data descending out =ranked_data;
var points;
ranks points_rank;
run ;
/\*view ranks\*/
proc print data =ranked_data;

Пример 2. Ранжирование первой переменной по группе
В следующем коде показано, как создать новую переменную с именем points_rank , которая ранжирует набранные очки, сгруппированные по командам:
/\*rank points scored, grouped by team\*/
proc rank data =original_data out =ranked_data;
var points;
by team;
ranks points_rank;
run ;
/\*view ranks\*/
proc print data =ranked_data;

Пример 3. Ранжирование одной переменной в процентили
Мы можем использовать оператор groups для ранжирования переменных по процентильным группам. Например, мы можем ранжировать каждое значение баллов в квартиль (четыре группы):
/\*rank points into quartiles\*/
proc rank data =original_data groups =4 out =ranked_data;
var points;
ranks points_rank;
run ;
/\*view ranks\*/
proc print data =ranked_data;

Строкам со значениями баллов в самом низком квартиле назначается группа 0 , строкам со значениями баллов в следующем нижнем квартиле назначается группа 1 и так далее.
Примечание.Вместо этого, чтобы присвоить значения децилям, просто используйте groups=10 .
Пример 4. Ранжирование нескольких переменных
В следующем коде показано, как создать несколько новых переменных для ранжирования очков и подборов :
proc rank data =original_data out =ranked_data;
var points rebounds;
ranks points_rank rebounds_rank;
run ;

Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в SAS:
Как использовать сводку процедур в SAS
Как использовать Proc Tabulate в SAS
Как использовать транспонирование PROC в SAS
Как создать частотные таблицы в SAS