O SAS que você irá se deparar na sua empresa provavelmente não se parece muito com o SAS University. Porém, os códigos que ensinaremos no University também servem para o SAS Guide do lugar onde você trabalha. Há algumas diferenças que também abordaremos no site para você não ficar confuso.
Para começar, você precisa saber no SAS Enterprise Guide, as tabelas encontram-se em estruturas físicas chamadas libname, entenda a libname como uma pasta em um diretório que você vai salvar suas tabelas, simples assim. Você salva as coisas no seu computador em diversas pastas, certo? Aqui é igual, você irá salvar em várias pastas. Para acessá-las, são dois passos simples:
1° – “Chame a Libname”:
Libname YUKIO "sasdata/estudos/Yukio";
2° Inicie a leitura da tabela com o nome da libname:
Data Aula_1; SET YUKIO.Tabela_1; Run;
Como vocês podem ver, primeiro eu tive que inserir no código uma linha para chamar a libname Yukio. Isso feito, eu utilizei um datastep simples apenas para atribuir todo o conteúdo da Tabela_1 localizada na libname Yukio em uma nova tabela chamada Aula_1. Eu simplesmente coloquei toda informação da Tabela_1 na Aula_1.
DATA é o comando para criar uma tabela nova, nesse caso a tabela chama Aula_1.
SET é comando que está lendo uma tabela qualquer, nesse caso a tabela sendo lida é a Tabela_1 que está na libname Yukio. Ok, mas e se escrevermos apenas Tabela_1, sem o YUKIO antes? O SAS nos voltaria um erro falando que não existe essa tabela, a não ser que ela exista na WORK (falaremos disso algumas linhas abaixo).
RUN é utilizado para finalizar o código. É basicamente o comando que deve ser utilizado ao final de cada código.
Agora, voltando a questão da . A work nada mais é do que a sua pasta temporária dentro do SAS.
Vamos pensar num exemplo prático:
Suponha que você tenha salvo a tabela do IBOVESPA do post anterior na libname YUKIO.
Como você faria isso? Simples, lembra que iniciamos o código passado com Data Ibovespa?
Basta iniciá-lo com Data Yukio.Ibovespa, e pronto, toda informação inputada está nesse endereço. Agora, olhe para o código abaixo dividido em duas partes:
DATA Ibovespa_v1; SET YUKIO.IBOVESPA; RUN; DATA Ibovespa_v2; SET Ibovespa_v1; IF Close > 50000; RUN;
Como já vimos no início, o primeiro Datastep inserido não faz nada além de copiar as informações de YUKIO.Ibovespa na tabela chamada Ibovespa_v1. Como não há nada antes do nome, essa tabela Ibovespa_v1 está salva na work, é temporária.
O segundo código, está lendo a tabela Ibovespa_v1 que está na work, na nossa pasta temporária. Ou seja, como já rodamos o primeiro código, existe uma tabela, chamada Ibovespa_v1, que não está em nenhuma libname, em nenhuma pasta. E onde está essa tabela? Ela está no que chamamos de work! A tabela está no SAS, você consegue executar códigos com ela enquanto não fechar o SAS. Após fechá-lo, você perde essa tabela, mas enquanto está aberto, você pode trabalhar com ela.
Ahhh, e tem o IF lá! Famoso IF!!!
If é um dos comandos mais utilizados em qualquer linguagem, e não tem segredo, é a tradução da palavra do inglês (=SE). É uma condicional, você quer ler a tabela Ibovespa_v1 e receber o resultado na tabela Ibovespa_v2 seguindo a condição imposta no IF, nesse caso, é a do valor de fechamento estar acima de 50000. Ou seja, você criou uma tabela chamada Ibovespa_v2 na sua work, com as mesmas colunas que a tabela Ibovespa_v2, mas só com as linhas em que o índice de fechamento está acima de 50000.
AVISO AOS INICIANTES EM SAS
Um dos maiores erros cometidos por iniciantes em SAS é sobrescrever uma tabela dentro de uma libname, ou seja, salvar algo em cima de uma tabela existente e perder a informação que havia nela.
Diferente de outros programas como o Excel, no SAS você não pode sair executando qualquer código e, se algo der errado, fechar o programa sem salvar, esperando que as tabelas modificadas voltem ao normal quando reabrir o programa. Não é assim que funciona.
Isto é, se você, por exemplo, possuir uma tabela chamada TABELA_1 na libname YUKIO e fizer um data set que crie uma tabela_1 na libname yukio, o comando irá sobreescrever a tabela_1 existente. Sem que eu precise ir lá em salvar como.
Por isso, minha sugestão para iniciantes é executar TUDO do código que receber na work. Ou então, alterar os nomes das bases em todos os data set que você tiver. Exemplo: Você recebeu o código abaixo de um colega. O processo que ficava com a pessoa, agora passará a ser seu.
/*filtra clientes SP*/ data lib.tabela_sp; set tabela_geral; if uf = "SP"; run;
O que você deve fazer é substituir a libname utilizada por work ou deixar em branco:
/*substitui a lib por work*/ data lib.tabela_sp; set tabela_geral; if uf = "SP"; run;
Ou então utilizar uma libname sua criada:
/*substitui a lib por uma lib nova sua*/ data novalib.tabela_sp; set tabela_geral; if uf = "SP"; run;
Agora você não está sobreescrevendo nenhuma tabela e não corre risco de perder as informações de seu colega. Ao final do código, você pode simplesmente dar um set na sua tabela final em uma lib sua.