sas guide

Formatação de Datas no SAS

Complementando o post Formatando Datas no SAS, aqui vão mais algumas dicas para 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;

post_formato_anomes

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;

post_formato_anomes_2

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;

post_formato_anomes_3

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

Bons estudos!

Anúncios

Como converter caractere para número no SAS

Complementando o post Tutorial: Trabalhando com Variáveis Texto no SAS, abaixo estão algumas formas de converter caractere para número no SAS. Primeiro, criamos um campo texto e na sequência demonstramos duas formas de convertê-lo em número. No primeiro exemplo temos um campo numérico escrito como texto que é convertido em em número com a função input() e o número de posições que o número terá. O segundo é um campo numérico com cifrão e o convertemos em número, sem incluir o cifrão.

Leia mais…

Tutorial: Trabalhando com Variáveis Texto no SAS

Trabalhar com variáveis texto (aka string, var char) é muito comum e sempre necessário. Seja porque a variável não é em sua essência uma string – pode ser uma variável numérica que foi inserida como texto -, seja porque você quer retirar somente algumas partes desejáveis do campo, você sempre precisa dar uma trabalhada nelas.

Este post ensinará como algumas dicas do que pode ser feito com variáveis texto no SAS. Como extrair uma parte da string? Como deixar o campo com a letra inicial maiúscula? Como excluir espaços em branco? Essas e outras funções você encontrará logo abaixo.

Leia mais…

Macro em SAS para verificar a existência de uma base

A macro abaixo, adaptação do próprio site da empresa SAS, verifica a existência de um arquivo antes de começar a fazer a tarefa demandada. No exemplo, a função exist() é utilizada e o parâmetro recebido é o nome do arquivo – com a libname, obviamente. A única tarefa do exemplo é exibir o dataset, qualquer outra tarefa que você queira fazer é só substituir o trecho do proc print:

Leia mais…

Como unir tabelas no SAS?

Todo mundo precisa, cedo ou tarde – e normalmente cedo -, juntar duas bases no SAS. Conforme já expliquei em Como combinar tabelas no SAS utilizando left join e full join e Combinando três tabelas com o left join, você pode utilizar os joins do SQL dentro do SAS e combinar as tabelas. Entretanto, há ainda uma forma de fazer isso dentro do data step.

Leia mais…

Soma com condição no SAS: Agrupamentos com Proc Sql

O group by é um método bem tranquilo de agrupar os valores de uma coluna de acordo com os valores de outra coluna. Veja os três exemplos abaixo, onde queremos primeiro saber qual o número de vendas de cada marca, o número de vendas por estado e o número de vendas de cada marca em cada estado:

Leia mais…