E aqui estamos mais uma vez para aprender como deixar nossos datasets melhor formatados. Dessa vez, falaremos de um problema recorrente em qualquer linguagem: datas. Como este campo pode vir em formato numérico ou texto, as pessoas tendem a ter problemas com operações ou até quando traçam gráficos utilizando eles. Sendo assim, hoje vamos aprender como formatar datas no SAS. Continuar a ler “Como formatar datas no SAS”
Etiqueta: proc sql
Introdução ao SAS e ao SAS University
Este post possui uma versão atualizada: Instalando o SAS University… de novo.
Hoje vamos dar início a uma série de posts com mais conteúdo de programação, especificamente em SAS. Por quê? Porque se você pretende fazer modelos estatísticos utilizando grandes bases de dados – e.g.: bases de 10 milhões de linhas -, você não vai conseguir utilizar o Excel.
Você pode até tentar utilizar o R, já mencionado aqui, um software gratuito e bastante popular. Porém, não é tão comum ver o R nas grandes empresas – pelo menos não nas brasileiras -, principalmente porque o SAS fornece outros serviços. Além disso, o que eu (e alguns outros) consideram uma grande vantagem no R é considerada por alguns sua maior desvantagem: os pacotes criados pelos usuários. Muitos usuários podem criar pacotes com funções prontas para ajudarem nas análises, mas não há garantia de que o pacote não possui erros. Um software como o SAS é menos propenso a esse risco.
O SAS é um software criado na década de 60-70 e hoje é um dos maiores players de mercado de analytics. A programação SAS é simples, e com a prática torna-se intuitiva , sua estrutura é composta de procedimentos e dados (data e procs), e aprofundaremos em cada tópico quando for necessário.
Embora o SAS mais utilizado nas empresas seja uma versão paga, o software possui também sua versão gratuita: o SAS University. Se você tiver dificuldades com a instalação, veja o passo a passo em Instalando o SAS University.
DATA x PROC
O SAS possui dois modos principais para trabalhar com os dados, o comando DATA e o PROC. Ambos servem para ler os dados e fazer manipulações. Porém, há uma variedade de procedimentos PROC que servem para análises estatísticas. A sintaxe básica é a seguinte:
DATA NOME_DA_TABELA_NOVA; SET NOME_DA_TABELA_ANTIGA; (TRATAMENTO 1) (TRATAMENTO 2) . . . (TRATAMENTO N) RUN;
O que o código acima faz?
Ele pega uma base de dados qualquer, aqui chamamos de NOME_DA_TABELA_ANTIGA, faz uma série de tratamentos quaisquer, como filtrar clientes ou criar novos campos, e cria uma nova base com estes tratamentos, aqui chamamos essa nova base de NOME_DA_TABELA_NOVA. O comando RUN serve para executar o código.
Utilizando o PROC, poderíamos fazer o mesmo código da seguinte forma:
PROC SQL; CREATE TABLE NOME_DA_TABELA_NOVA AS SELECT * FROM SET NOME_DA_TABELA_ANTIGA; RUN;
Porém, a inserção dos tratamentos varia caso a caso, a depender de qual tratamento está sendo feito (você verá abaixo um exemplo). Poderíamos ter algo como:
PROC SQL; CREATE TABLE NOME_DA_TABELA_NOVA AS SELECT *, (TRATAMENTO 1) FROM SET NOME_DA_TABELA_ANTIGA (TRATAMENTO 2); RUN;
Note que esse procedimento possui SQL no nome. Para quem conhece a linguagem, vai reconhecer a sintaxe, pois é a mesma do SQL, acrescida de ‘PROC SQL’ e ‘RUN’.
Há uma série de procedimentos para obter algumas estatísticas da base, como o PROC MEANS, PROC FREQ, etc. Isso é abordado nos posts de Programação em SAS.
DATA STEP
Terminada a instalação e o entendimento do que são os comandos DATA e PROC, vamos começar construindo uma tabela para praticar. Na tabela abaixo, temos uma lista de clientes, cuja identificação se dá pelo campo id. Além da chave de identificação, temos a UF do cliente, a data em que o cadastro foi realizado e as respectivas idades:
/*Cria tabela exemplo*/ data tabela_exemplo; input id $ uf $ dt_cadastro yyyymmdd. idade; cards; 12531 SP 20170102 23 41456 SP 20180103 25 55564 GO 20180203 30 97943 PR 20171029 25 88712 PR 20150722 27 88712 SP 20140620 22 ; run;
Veja mais uma vez que para rodar um data step, você deve começar com Data + Nome da tabela que você vai criar, seguido por “;“.
Input com datalines serve para você inserir os dados manualmente. Após o input você deve colocar os nomes das suas variáveis e após o datalines os valores delas. Para finalizar, você deve utilizar o run.
Comentários são feitos utilizando uma barra seguida do asterisco e encerrados com asterisco seguido de uma barra. Ou então, e isto será mostrado nos próximos exemplos, com um asterisco e encerrado com ponto e vírgula.
Outro comando simples que é bastante utilizado e útil é o if, que pode servir tanto para filtrar quanto para executar um comando dada uma condição. Veja os exemplos abaixo:
* filtra clientes do parana; data tabela_pr; set tabela_exemplo; if uf = "PR"; run;
* se o cliente for de SP marca a fl_sp igual a 1; * caso contrario fl_sp igual a 0; data tabela_pr; set tabela_exemplo; if uf = "SP" then fl_sp = 1; else fl_sp = 0; run;
UTILIZANDO SQL DENTRO DO SAS
O SQL é a principal linguagem para manipular bases de dados. Como o SAS deve ser completo, fazendo com que o trabalho de ponta a ponta fique fácil para o usuário, é possível utilizar o SQL para fazer alterações nas bases. Para utilizá-lo, basta combinar o comando proc sql com os comandos tradicionais de SQL. No exemplo abaixo, selecionamos apenas os clientes com UF igual a SP:
proc sql; create table clientes_sp as select * from tabela_exemplo where uf = "SP" ; run;
Neste outro exemplo, tiramos a média das idades dos clientes:
proc sql; select mean(idade) as media_idade from tabela_exemplo ; run;
MUITO IMPORTANTE: TRABALHAR NA WORK x TRABALHAR NA LIBRARY
Os exemplos acima foram feitos trabalhando no que chamamos de WORK. O que quer dizer isso? Bem, quer dizer que ao fechar o SAS, você perderá esse trabalho. Claro que para uma análise rápida, você pode não querer salvar as tabelas geradas e por isso prefira trabalhar na WORK. No entanto, o mais comum é que você trabalhe numa biblioteca, na LIBRARY.
Na sua empresa, deve existir um servidor SAS que armazena todas as bases utilizadas. Para um analista de dados, alguém de modelagem estatística, não é necessário ter grande entendimento deste servidor, somente que ele funciona como um diretório qualquer do Windows, mas é armazenado num local específico sob os cuidados da área de TI.
Quando você quer salvar o arquivo numa library, há dois passos a serem feitos. Primeiro, você deve carregar a library executando uma simples linha de código que segue o padrão abaixo:
library nome_da_library "diretorio_da_library";
Em seguida, os exemplos acima devem ser mudados inserindo o nome da library antes do nome da base que está sendo carregada:
proc sql; create table nome_da_library.clientes_sp as select * from nome_da_library.tabela_exemplo where uf = "SP" ; run;
No exemplo acima, estamos trabalhando com uma base no caminho nome_da_library e estamos criando uma base nova neste mesmo caminho. Poderia ser diferente, poderíamos estar carregando a base de um caminho e salvando ela em outro:
library nome_da_library_1 "diretorio_da_library 1"; library nome_da_library_2 "diretorio_da_library 2"; proc sql; create table nome_da_library_2.clientes_sp as select * from nome_da_library_1.tabela_exemplo where uf = "SP" ; run;
Nesse último exemplo, nós carregamos uma base que estava localizada no caminho nome_da_library_1, fizemos um filtro nela e salvamos com um novo nome no caminho nome_da_library_2.
ATENÇÃO: É COMUM QUE INICANTES NO SAS AO COMETER ALGUM ERRO NO CÓDIGO PENSEM QUE, ASSIM COMO NO EXCEL, BASTA FECHAR O SOFTWARE SEM SALVAR QUE EM NADA IMPACTARÁ O QUE FOI FEITO. ISSO NÃO É INTEIRAMENTE VERDADE. VAMOS SUPOR QUE VOCÊ TENHA CRIADO UMA BASE NO CAMINHO NOME_DA_LIBRARY_2 CHAMADA CLIENTES_SP. PORÉM, NESSE MESMO CAMINHO JÁ EXISTIA UMA BASE COM ESSE NOME. VOCÊ IRÁ SOBRESCREVÊ-LA E NÃO TERÁ MAIS COMO RECUPERAR. CONSELHO DE AMIGO: NO COMEÇO, TRABALHE SOMENTE NA WORK E PERGUNTE AO SEU COLEGA MAIS SÊNIOR ONDE SALVAR O RESULTADO FINAL OU CRIE UMA LIBRARY SUA ONDE VOCÊ POSSA COMETER QUALQUER ERRO E NÃO ESTRAGUE NENHUMA BASE DA EMPRESA. SÉRIO, ESSE ERRO É MUITO COMUM, SE VOCÊ NÃO ENTENDEU, ME ESCREVA OU, EM ÚLTIMO CASO, FALE COM SEU COLEGA MAIS SÊNIOR “OLHA EU LI QUE POSSO ACABAR SOBRESCREVENDO UMA BASE NA BIBLIOTECA MAS EU NÃO ENTENDI DIREITO, ME AJUDA NISSO”.
Agora que você já sabe o básico, acesse Programação em SAS e pratique!