string

Trabalhando com Strings No SAS

Nesse post vamos entender algumas formas de lidar com strings no SAS.

Leia mais…

Anúncios

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;