BookmarkSubscribeRSS Feed
Henriquemont
Fluorite | Level 6
Pessoal, espero que estejam bem
Tenho uma duvida:

Criei um program no meu SAS e cheguei no resultado e extracão do MES que queria.

Contudo, precisaria que esse program pudesse ler OUTRAS BASES IGUAIS so que de meses diferentes e acumulando pelo menos os ultimos 6 meses.

Exemplo: trouxe a base unica do mes 6 (junho) como queria, ok.

Precisaria dentro desse program um codigo que chamasse de uma vez só, alem da base do mes 6 os outros meses, ficando assim os meses ( 1, 2, 3, 4, 5 e 6) na mesma extracão.

Apos isso agruparia tudo em um base unica (tabelão)

Saberiam me dizer como escrever esse codigo ou algum insight de como proceder?

Muito obrigsdo desde ja !!
3 REPLIES 3
JosvanderVelden
SAS Super FREQ

Olá,

 

É muito difícil aconselhar baseado no texto que você colocou no post. Sugiro colocar um pequeno exemplo de código para que nos podemos ajudar. Um exemplo de código que podia ser útil está incluido abaixo:

data tenho;
   input mesano $ produto $ quantidade;
cards;
jan2023 banana 2
feb2023 tulipa 12
mar2023 alface 250
feb2023 banana 2
mar2023 tulipa 12
jan2023 alface 250
;
run;

data mes;
   set tenho;
   mesano_sasdate = input(mesano, monyy7.);
   mes = month(mesano_sasdate);
   ano = year(mesano_sasdate);
run;

proc sort; by mes; run;

data quero (keep = ano mes tudo);
   length tudo $256;
   retain tudo;
   set mes;
   if first.mes then tudo = " ";
   tudo = catx(" ", tudo, put(quantidade, best32.), produto, "&"); 
   if last.mes then do;
      tudo = substr(tudo, 1, length(tudo)-2);
      output;
      end;
   by mes;
run;
wilkoba
SAS Employee

Bom dia @Henriquemont,

 

Imagino que tenha vários datasets SAS (ou sas7bdat por exemplo) sendo eles assim DADOS_jan2023, DADOS_fev2023, ... DADOS_jul2023, e provalvemente estão na mesma libname.

 

Através da SAS Macro Language você pode fazer um programa SAS que fará a leitura de vários arquivos e juntá-los em um único arquivo acumulado.

Exemplo:

 

%let mes_corrente = jul;
%let ano_corrente = 2023;

data DADOS_ACUMULADO;
  set DADOS_ACUMULADO DADOS_&mes_corrente.&ano_corrente;
run;

 

 

O código acima não esta 100% correto, não testei ele, é mais um exemplo mesmo de como seria, pois minha real sugestão que é você estude e conheça SAS Macro Language. Abaixo você encontrará vários vídeos tutoriais sobre SAS Macro também, caso precise, sugiro procurar treinamentos de SAS Macro.

 

https://youtu.be/0MC_FChSAuw

https://youtu.be/P1LZ2_sjvtc

https://youtu.be/ODq6V69IX2Y

 

Conto conosco caso precisar de mais alguma coisa.

gilmarcezar
Calcite | Level 5
Bom dia,
Você pode construir uma macro com um proc sql onde o nome da tabela (o from) é uma variável. Então vc passa o mês desejado para a macro.
Esse exemplo pode ajudar:
https://stackoverflow.com/questions/42419239/sas-using-variable-in-table-name

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Discussion stats
  • 3 replies
  • 954 views
  • 3 likes
  • 4 in conversation