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;

Captura de Tela 2018-06-12 às 06.34.29

/* 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;

Captura de Tela 2018-06-12 às 06.36.26

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;

Captura de Tela 2018-06-12 às 06.38.29

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

Captura de Tela 2018-06-12 às 06.41.05

Ou então:

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

Captura de Tela 2018-06-12 às 06.42.08

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.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s