Conversão de Número para Texto no SAS

Como eu sempre digo, lidar com datas é bem chatinho em qualquer linguagem. No SAS, não é diferente. Como 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?, resolvi agora fazer uma conversão menos comum, mas que ocorre também. Agora, é hora de aprender como lidar com os formatos número e texto.

Utilizando os dados german_credit_21, 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;

E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados. E se você gosta de tecnologia, escute o podcast Futuristando!

Bons estudos!

Deixe um comentário

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