Como marcar o percentil no SAS?

Matemáticos, estatísticos e cientistas de dados em geral, gostam de trabalhar com percentil. Faz mais sentido do que dividir uma variável contínua em faixas de valor quaisquer, escolhidas de forma subjetiva. No SAS, eu costumo criar essas faixas com o PROC UNIVARIATE. Eu crio uma tabela auxiliar com os valores de cada percentil e depois marco na minha base à qual percentil que o indivíduo (ou elemento qualquer ali) pertence. Não sei se é a melhor forma, mas funciona. Espero que o código abaixo lhe seja útil:

/*CRIA TABELA EXEMPLO*/

DATA EXEMPLO;
INPUT ID $ UF $ VLR_COMPRA;
CARDS;
AA123 SP 10
BB001 MG 1500
AA010 BA 1650
AA003 BA 900
AB222 SP 1520
CC333 PE 575
RR444 SP 1000
AA111 PE 500
DD333 BA 3000
EE888 PE 1800
;
RUN;

/*CRIA UMA TABELA COM O VALOR DE CADA PERCENTIL DA VARIAVEL*/
PROC UNIVARIATE DATA= EXEMPLO;
VAR VLR_COMPRA;
OUTPUT OUT=WORK.VLR_COMPRA PCTLPRE=P_VLR_COMPRA_ PCTLPTS= 10 TO 100 BY 10;
RUN;

/*MARCA A BASE ORIGINAL DE ACORDO COM O PERCENTIL*/
PROC SQL;
CREATE TABLE EXEMPLO_V2 AS SELECT *,
CASE
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_10 FROM WORK.VLR_COMPRA) THEN 'P10'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_20 FROM WORK.VLR_COMPRA) THEN 'P20'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_30 FROM WORK.VLR_COMPRA) THEN 'P30'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_40 FROM WORK.VLR_COMPRA) THEN 'P40'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_50 FROM WORK.VLR_COMPRA) THEN 'P50'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_60 FROM WORK.VLR_COMPRA) THEN 'P60'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_70 FROM WORK.VLR_COMPRA) THEN 'P70'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_80 FROM WORK.VLR_COMPRA) THEN 'P80'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_90 FROM WORK.VLR_COMPRA) THEN 'P90'
WHEN VLR_COMPRA <= (SELECT P_VLR_COMPRA_100 FROM WORK.VLR_COMPRA) THEN 'P100'
ELSE 'OUTROS'
END AS PERCENTIL
FROM EXEMPLO;
RUN;

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *