Tenho um conjunto de dados que contém as seguintes variáveis relevantes, juntamente com muitas outras:
data have;
input group $ score weight;
datalines;
A 12 1.2
A 19 1
A 23 1.7
A 40 2
A 11 1
A 16 1.5
A 34 1.3
A 45 1
A 28 1.8
A 30 1.2
A 24 1.1
A 28 1
B 31 1.5
B 32 1.6
B 36 1.9
B 18 2
B 28 1.4
B 25 1.3
B 22 1.8
B 27 1.6
B 31 1.5
B 42 1.7
;
run;
Estou acostumado a fazer grupos classificados no SAS usando a instrução proc rank, por exemplo:
proc rank data=have groups=4 out=want;
by group;
var score;
ranks score_quartiles;
run;
Mas PROC RANK não lida com pesos, e para o que pesquisei, preciso usar proc univariate, transpor os resultados, apagar laços duplicados e mesclar de volta ao conjunto de dados original. Mas não estou conseguindo descobrir como fazer isso.
Qualquer ajuda é muito apreciada.
Em vez de tentar gerar um formato, por que não gerar alguma lógica IF/THEN a partir da saída de PROC UNIVARIATE?
Então, primeiro use PROC UNIVARIATE com a instrução WEIGHT para gerar os pontos de corte que você deseja usar para suas classificações.
Em seguida, use-os para gerar a lógica SE/ENTÃO para atribuir CLASSIFICAÇÃO com base no GRUPO e na PONTUAÇÃO.
Em seguida, execute o código
Para seus dados de exemplo que levam a esta etapa de dados: