Formatação de Datas no SAS

Sim, continuamos aprendendo a lidar com formatações no SAS. Como sabemos, os dados nem sempre chegam no formato certo. Pode ter número em formato de texto, data em formato de número, além de outras complicações. Hoje, vamos complementar o post Formatando Datas no SAS com mais algumas dicas de como formatar os campos de data no SAS.

Neste post aprenderemos como podemos criar um campo com o ano e o mês de uma data. Como um extra, lembraremos também como converter uma data no formato texto para um campo no formato data. E, por fim, um operador novo que acredito que não mencionei ainda que são as duas barras verticais ||, que servem para concatenar (=unir) dois campos.

Começamos com uma base que traz uma coluna com a data em formato de texto. A tabela abaixo tem as informações da data em que uma compra foi realizada e o valor gasto:

data compras;
    input dt_compra vlr_compras;
    cards;
 20151102 1000
 20151010 500
 20161201 650
 20140130 900
;
run;

 

Agora, vamos converter a data que está em formato de texto e deixá-la em formato de data. Para isso, usamos a função input() combinada com o format. Chamaremos o campo novo de dt_compra_new. Apesar de ocupar mais espaço, é uma boa ideia para novos usuários do SAS criar campos novos, ao invés de perder os antigos, até mesmo para visualizar a diferença entre o campo novo e o antigo. A nossa tabela com o campo dt_compra_new se chamará formata_data:

data formata_data;
    set compras;
    dt_compra_new = input(put(dt_compra, 8.), yymmdd10.);
    format dt_compra_new yymmdd10.;
run;

 

Agora, duas formas de obter um campo formado pelo ano e o mês da data em questão são mostrados abaixo. A primeira forma demonstrada abaixo é criando o campo ANO_MES_1. Obtemos esse campo extraindo o ano da data utilizando a função year() e o mês com a função month(). A partir desses dois valores, utilizamos as duas barras verticais ‘||‘ para juntá-los. Como o mês extraído corre o risco de ter um dígito apenas, precisamos acrescentar um zero para alguns casos (e.g.: o mês de setembro combinado com o ano 2018, se não colocarmos um zero no meio, ficaria 20183). A segunda maneira é utilizando a função put() combinada com o argumento monyy7. Veja o exemplo abaixo:

data formata_data_2;
    set formata_data;

    if month(dt_compra_new) < 10 then ANO_MES_1 = compress(year(dt_compra_new) || '0' || month(dt_compra_new));
    else ANO_MES_1 = compress(year(dt_compra_new) || month(dt_compra_new));

    ANO_MES_2 = put(dt_compra_new, monyy7.);

run;

Teste os dois exemplos. Com eles você vai aprimorar mais ainda o uso do if, do || e da função put().

Gostou do conteúdo? Se inscreva para receber 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 compartilhar com seus amigos. De verdade, isso faz toda a diferença. Você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @EstatSite ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal do Yukio.

Bons estudos!

3 comentários em “Formatação de Datas no SAS”

  1. Pingback: EstatSite.com

Deixe um comentário

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