Conversão de Número para Texto no SAS

Já falei sobre como lidar com datas no SAS no post Formatando Datas no SAS e Como calcular a diferença entre duas datas no SAS?. Agora é hora de aprender como lidar com os formatos número e texto.
Utilizando os dados german_credit_2, primeiro criamos um campo chamado documento contendo alguns números aleatórios. Isso é algo comum de se encontrar por aí, conjuntos de dados nos quais o campo CPF ou RG está no formato numérico. Lidar com esses dados pode ser um problema, pois algumas vezes esse documento pode conter zeros na frente. Para solucionar esse problema, vamos converter o campo documento em formato numérico para um campo no formato texto  de três maneiras utilizando a função put(): colocando zeros na frente do número; sem colocar zeros e apenas passando o comprimento do campo; deixando o campo alinhado a esquerda, evitando espaços em branco que ficariam na opção padrão do SAS:
** Cria uma coluna com numeros de documento aleatorios;
data german_credit_21_v2;
     set tmp.german_credit_21;
     documento = round(rand("Uniform"),.000001)*1000000;
run;

** Converte a coluna documento para caracter;
data german_credit_21_v3;
     set german_credit_21_v2;

     *acrescenta zero;
     documento_zero = put(documento, z15.);

     *alinhado a direita por default;
     documento_str = put(documento, 15.);

     *alinha a esquerda;
     documento_teste = put(documento, 15. -L);
run;
Agora, pode ser que o contrário ocorra. Você queira converter do formato texto para o numérico. Novamente, apresentamos mais de uma opção. Podemos converter simplesmente multiplicando por 1, ou então podemos utilizar a função input() do SAS:
** Converte caractere para numerico;
data german_credit_21_v4;
     set german_credit_21_v3;
     
     *forma mais simples de fazer a conversao;
     documento_nr1 = documento_zero*1;

     *utilizando input;
     documento_nr2 = input(documento_zero, 15.);*escolhe comprimento;
run;
A  mesma função input() faz outros tipos de tratamento, considerando campos com vírgula e campos com $. Veja como vamos lidar com os dois campos criados abaixo (esse exemplo você pode aplicar em qualquer conjunto de dados que você possua em mãos):
data german_credit_21_v5;
     set german_credit_21_v4;
     texto_com_virgula = '5,500';
     numeric_var_comma = input(texto_com_virgula , comma5.);

     texto_com_cifrao = '$5,500';
     numero_dolar = input(texto_com_cifrao , dollar5.);
     format numero_dolar dollar10.;
run;
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