SAS

Combinando comandos com a expressão LET em SAS

Complementando os posts Macros e a expressão Let no SAS e Abbreviation Macro no SAS – Atalho de Códigos, trago aqui uma curiosidade que eu quase não vi nos códigos que herdei por aí (logo penso não ser tão comum): é possível inserir um comando dentro do LET no SAS. Utilizando a tabela exemplo do post Como tratar duplicidades no SAS, veja como é simples:

Leia mais…

Anúncios

Deletando Linhas no SAS Condicionalmente

Como deletar uma linha no SAS dada uma condição?

Basta combinar o if com o delete. No exemplo abaixo, primeiro foi criado uma tabela chamada TESTE com as colunas NOME e UF de cada cliente. Em seguida, deletamos todas as linhas cuja coluna UF seja SP

Leia mais…

Tratando Duplicidades no SAS

É comum encontrar campos duplicados em uma tabela. Seja porque algum join ou agrupamento que poderia ter sido melhor realizado (mesmo não trazendo informações erradas), por causa de algum erro de inserção da informação ou qualquer outra coisa. No SAS, há algumas maneiras práticas de tratar esse erro. Aqui você vai aprender a ordenar sua tabela com PROC SORT, exluir duplicidades com NODUPKEY, gerar uma tabela com os valores que estavam duplicados utilizando DUPOUT e excluir duplicidades por todos os campos com BY _ALL_.

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…

Acompanhando a execução da macro no SAS

Mostrei no post Acompanhando o processo no SAS utilizando o Sysecho como utilizar o comando sysecho para acompanhar um procedimento extenso, algo que leva muito tempo para ser executado ou com muitas etapas. Porém, seria interessante também fazer um acompanhamento parecido quando executamos uma macro.

Leia mais…

Convertendo diferentes formatos de data no SAS

Essa é intuitiva, mas não sei se todo mundo conhece. Então, se você leu Como calcular a diferença entre duas datas no SAS? e Formatando Datas no SAS, agora que já conseguiu criar colunas e mudar formato numérico para data, pode ainda querer trocar aquela data 20DEC2016 para 20/12/2016. Isso pode ser feito com o format:
*codigo que pega a tabela_old, com o campo data no formato 20DEC2016;
*e cria uma tabela nova chamada tabela_new com a data no formato 20/12/2016;
data tabela_new;
	set tabela_old;
 	format data ddmmyy10.;
run;

Proc Sort no R

Muita gente sabe utilizar o proc sort para ordenar os campos no SAS.

Por exemplo, podemos ordenar uma tabela chamada dados_entrada pelas colunas campo1 e campo2, do menor para o maior valor, e ter como saída uma tabela dados_saida (exemplo 1). E podemos também ordenar uma tabela chamada dados_entrada pelas colunas campo1, do menor para o maior, e campo2, do maior para o menor valor, e ter como saída uma tabela dados_saida (exemplo 2). Bastaria utilizar:

* exemplo 1
proc sort data= dados_entrada out= dados_saida; 
    by campo1 campo2; 
run;

* exemplo 2
proc sort data= dados_entrada out= dados_saida; 
    by campo1 descending campo2; 
run;

A mesma coisa, que nem todo mundo sabe, pode ser feita no R, e é até mais simples:

## exemplo 1
dados_saida = dados_entrada[order(dados_entrada$campo1,
dados_entrada$campo2),];

## exemplo 2
dados_saida = dados_entrada[order(dados_entrada$campo1,
-dados_entrada$campo2),];

R sendo R!

Gerar amostras aleatórias simples no SAS

Em diversos estudos estatísticos, seja para fazer uma pesquisa de mercado ou um modelo estatístico, é necessário gerar uma amostra aleatória. No SAS, isso é bem simples:

/*Substitua os nomes: tabela_entrada, amostra_gerada *\
/*          e tamanho_da_amostra                     *\
proc surveyselect 
    data= tabela_entrada
    out= amostra_gerada
    n = tamanho_da_amostra method=SRS;
run;

Ps.: As amostras são sem reposição!