DATA Step, Macro, Functions and more

vertically combine many data sets

Accepted Solution Solved
Reply
Highlighted
Occasional Contributor
Posts: 12
Accepted Solution

vertically combine many data sets

Hi Everyone, thank you for reading the post. 

 

I combined 24 datasets using the following code: 


data conso.agloan;
set conso.agloan1993 conso.agloan1994 conso.agloan1995 conso.agloan1996 conso.agloan1997 conso.agloan1998 conso.agloan1999 conso.agloan2000 conso.agloan2001 conso.agloan2002 conso.agloan2003 conso.agloan2004 conso.agloan2005 conso.agloan2006 conso.agloan2007 conso.agloan2008 conso.agloan2009 conso.agloan2010 conso.agloan2011 conso.agloan2012 conso.agloan2013 conso.agloan2014 conso.agloan2015 conso.agloan2016;
run;

 

It works. But is there any trick to do it smarter without actually typing each dataset, something like

 

data conso.agloan;

set conso.agloan1993 - conso.agloan2016;

run;

 

Thank you in advance. 

 


Accepted Solutions
Solution
‎03-08-2018 12:05 PM
Super User
Posts: 13,583

Re: vertically combine many data sets

Posted in reply to changxuosu1

Or if you want ALL of the agloan sets in the library:

 

data conso.agloan;

set conso.agloan: ; /* note the : that indicates the list operator */

run;

 

If your individual sets are largish there may be a time penalty due to the way SET works and a series of Proc Append Calls may be quicker to execute. Unfortunately Proc Append only uses two data sets and not the shortcut list.

View solution in original post


All Replies
PROC Star
Posts: 1,833

Re: vertically combine many data sets

Posted in reply to changxuosu1

did your something like 

 

data conso.agloan;

set conso.agloan1993 - conso.agloan2016;

run;

 

work?????

Occasional Contributor
Posts: 12

Re: vertically combine many data sets

Posted in reply to novinosrin
oh my God! it works!!! it's so hilarious.. Smiley Happy thanks!
Solution
‎03-08-2018 12:05 PM
Super User
Posts: 13,583

Re: vertically combine many data sets

Posted in reply to changxuosu1

Or if you want ALL of the agloan sets in the library:

 

data conso.agloan;

set conso.agloan: ; /* note the : that indicates the list operator */

run;

 

If your individual sets are largish there may be a time penalty due to the way SET works and a series of Proc Append Calls may be quicker to execute. Unfortunately Proc Append only uses two data sets and not the shortcut list.

Occasional Contributor
Posts: 12

Re: vertically combine many data sets

Thank you ballardw! it works perfectly!
Valued Guide
Posts: 597

Re: vertically combine many data sets

Posted in reply to changxuosu1

If all the tables are in specific library and have a defined prefix or suffix then you can get those table list by running query on dictionary.tables

proc sql;
select distinct memname into: SET_Tables separated by " "
	from dictionary.tables
	where libname="CONSO" and memname like 'AGLOAN%';
quit;
data want;
set &SET_Tables;
run;
Thanks,
Suryakiran
Occasional Contributor
Posts: 12

Re: vertically combine many data sets

Posted in reply to SuryaKiran
Thank you so much Suryakiran~ It works great~
Occasional Contributor
Posts: 12

Re: vertically combine many data sets

Posted in reply to SuryaKiran
can i choose two solutions? this works great as well. ( I changed select distinct memname into 'conso.'||left(memname) to customize to my libary)
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 7 replies
  • 159 views
  • 3 likes
  • 4 in conversation