SAS: Representatividade de cada linha e Soma Cumulativa

Recentemente me pediram ajuda com o SAS, para que fosse possível colocar, para determinada coluna, o quanto cada linha representava (%) da soma total dessa coluna. Na sequência, seria preciso colocar a soma cumulada desses percentuais. Acho bastante útil essa manobra. O curioso, é que no proc freq dá para obter a frequência acumulada, mas não o valor. Por isso tive que fazer de um jeito um pouquinho mais trabalhoso:

/*cria uma tabela de exemplo*/
 data exemplo;
     input id $ valor;
     cards;
 APEOEIQK 100
 BDJQOPEX 200
 BCAPEORP 300
 XRALPOED 400
 XAWPELOR 500
 ;
 run;

/* cria coluna com representatividade (%) de cada linha*/
 proc sql;
 create table exemplo_v2 as
 select id
         , valor
         , valor/total_valor as percentual format=percent7.1
 from (select *
              , sum(valor) as total_valor
                from exemplo)
 group by 1;
 run;

O passo a seguir não é necessário, mas como eu já o fiz, resolvi colocar:

/* organiza com percentual em ordem decrescente */
 proc sort data=exemplo_v2; 
     by descending percentual; 
 run;

/* cria coluna cumulativa */
 data exemplo_v3;
     set exemplo_v2;
     percentual_acumulado+percentual;
 run;

Ou então:

/* cria coluna cumulativa */
data exemplo_v3;
    set exemplo_v2;
    attrib percentual_acumulado format=percent7.1 ;
    percentual_acumulado+percentual;
run;

Acredito que no proc tabulate e no proc freq seja possível fazer isso. Vou tentar depois e, se eu conseguir, posto em seguida aqui.

3 comentários em “SAS: Representatividade de cada linha e Soma Cumulativa”

Deixe um comentário

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