Alterando Comprimento de Campo Novo no SAS

Muitas vezes no SAS precisamos criar novos campos. No entanto, é preciso saber lidar com o comprimento dos campos. Por exemplo, suponha que você tenha uma tabela com informações de vendas das suas lojas:

attrib

Tabela 1

Nesta tabela, há um campo chamado cd_estado contendo o código para cada estado. Você deseja criar um campo estado contendo o nome dos estados de acordo com o código informado:

data tabela_vendas_v2;
    set tabela_vendas;
    if cd_estado = 1 then estado = "BAHIA";
    else if cd_estado = 2 then estado = "SÃO PAULO";
    else estado = "MINAS GERAIS";
run;

O código acima leu a sua tabela chamada TABELA_VENDAS e criou o campo ESTADO de acordo com o de-para informado. Entretanto, como o primeiro nome atribuído foi BAHIA, o SAS entendeu que o campo ESTADO tem comprimento 5. Portanto, o resultado do código foi esse:

attrib_2

Tabela 2

Uma solução que eu vejo nos códigos de algumas pessoas é colocar o maior nome no primeiro if ou então deixar espaços em branco:

/*exemplo 1*/
data tabela_vendas_v2;
    set tabela_vendas;
    if cd_estado = 1 then estado = "BAHIA      ";
    else if cd_estado = 2 then estado = "SÃO PAULO";
    else estado = "MINAS GERAIS";
run;
/*exemplo 2*/
data tabela_vendas_v2;
    set tabela_vendas;
    if cd_estado = 3 then estado = "MINAS GERAIS"
    else if cd_estado = 1 then estado = "BAHIA";
    else estado = "SÃO PAULO";
run;

O resultado de ambos seria:

attrib_3

Tabela 3

A forma mais eficaz, no entanto, é utilizando a função attrib para criar o campo no comprimento desejado:

data tabela_vendas_v2;
    set tabela_vendas;
    attrib estado format=$25.;
    if cd_estado = 1 then estado = "BAHIA";
    else if cd_estado = 2 then estado = "SÃO PAULO";
    else estado = "MINAS GERAIS";
run;

Esse último script também cria a Tabela 3, mas com o campo estado com comprimento 25. Sendo assim, é possível inserir qualquer nome ali que tenha até 25 caracteres.

Anúncios

2 comentários

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 )

Conectando a %s