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:
/*filtra individuos com UF = SP*/ %let filtro = if UF = "SP"; data tabela_sp; set tabela_exemplo; &filtro; run;
O mesmo código no proc sql:
/*filtra individuos com UF = SP*/ %let filtro = if UF = "SP"; proc sql; create table tabela_sp as select * from tabela_exemplo where &filtro; run;
Você pode combinar esses filtros (ou outros comandos quaisquer) com a função join em algumas situações em que existem várias tabelas com especificações distintas e deixar seu código mais maleável (ex.: left join __ where &comando).
Como já disse em outras situações, quanto menos estático for seu código, mais interessante será, pois você não precisará ficar fazendo várias alterações ao longo do script e sim apenas uma ou outra mudança nas variáveis inputs. Então bora usar o let mais aí nesses scripts!
Qualquer dúvida, deixe um comentário ou me escreva.