<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Keep the same variables for multiple datasets in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442723#M282773</link>
    <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm wondering if there is an efficient way to keep the same variables across multiple datasets in data step.&lt;/P&gt;&lt;P&gt;Consider the following situation&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;data dsout&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; merge dsName1 (keep=var1 var2 var3),&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsName2 (keep=var1 var2 var3),&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsName3 (keep=var1 var2 var3)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; ;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; by var1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;run;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of rewriting &lt;SPAN&gt;&lt;FONT face="courier new,courier"&gt;(keep=var1 var2 var3)&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;after each input dataset, is there a way to tell sas&amp;nbsp;that I'm gonna keep the same variables&amp;nbsp;across&amp;nbsp;many input datasets?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I understand that I could just&amp;nbsp;put &lt;FONT face="courier new,courier"&gt;keep&lt;/FONT&gt; after&amp;nbsp;&lt;FONT face="courier new,courier"&gt;dsout&lt;/FONT&gt;&amp;nbsp;and get the same result but that would be much slower for input data set consisting of a large number of&amp;nbsp;variables.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;</description>
    <pubDate>Tue, 06 Mar 2018 04:17:14 GMT</pubDate>
    <dc:creator>liangchh0</dc:creator>
    <dc:date>2018-03-06T04:17:14Z</dc:date>
    <item>
      <title>Keep the same variables for multiple datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442723#M282773</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm wondering if there is an efficient way to keep the same variables across multiple datasets in data step.&lt;/P&gt;&lt;P&gt;Consider the following situation&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;data dsout&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; merge dsName1 (keep=var1 var2 var3),&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsName2 (keep=var1 var2 var3),&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsName3 (keep=var1 var2 var3)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; ;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; by var1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;run;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of rewriting &lt;SPAN&gt;&lt;FONT face="courier new,courier"&gt;(keep=var1 var2 var3)&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;after each input dataset, is there a way to tell sas&amp;nbsp;that I'm gonna keep the same variables&amp;nbsp;across&amp;nbsp;many input datasets?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I understand that I could just&amp;nbsp;put &lt;FONT face="courier new,courier"&gt;keep&lt;/FONT&gt; after&amp;nbsp;&lt;FONT face="courier new,courier"&gt;dsout&lt;/FONT&gt;&amp;nbsp;and get the same result but that would be much slower for input data set consisting of a large number of&amp;nbsp;variables.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2018 04:17:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442723#M282773</guid>
      <dc:creator>liangchh0</dc:creator>
      <dc:date>2018-03-06T04:17:14Z</dc:date>
    </item>
    <item>
      <title>Re: Keep the same variables for multiple datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442763#M282774</link>
      <description>&lt;P&gt;Hope this code may be useful,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table dsout as&lt;BR /&gt;select A.var1,A.var2,A.var3,B.var2 as var22,B.var3 as var23,&lt;BR /&gt;C.var2 as var32,C.var3 as var33&lt;BR /&gt;from dsName1 as A&lt;BR /&gt;left join dsName2 as B on A.var1=B.var1&lt;BR /&gt;left join dsName3 as C on B.var1=C.var1;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you keep same variables overwriting of variable occur.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2018 07:00:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442763#M282774</guid>
      <dc:creator>reshmape</dc:creator>
      <dc:date>2018-03-06T07:00:44Z</dc:date>
    </item>
    <item>
      <title>Re: Keep the same variables for multiple datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442808#M282775</link>
      <description>&lt;P&gt;To do this in a DATA step, there is only a partial solution.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;%let varlist = var1 var2 var3;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;data dsout&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; merge dsName1 (keep=&amp;amp;varlist)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsName2 (keep=&amp;amp;varlist)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsName3 (keep=&amp;amp;varlist)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; by var1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;run;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You need to type the list out once, and you need to specify KEEP= for every data set.&amp;nbsp; But you don't need to type out the list multiple times.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note that you have issues to consider.&amp;nbsp; What will happen when VAR2 comes in from multiple data sets, but there is only room to store one variable named VAR2 in the final result?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2018 09:26:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442808#M282775</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-03-06T09:26:00Z</dc:date>
    </item>
    <item>
      <title>Re: Keep the same variables for multiple datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442816#M282776</link>
      <description>&lt;P&gt;Thanks for your response.&lt;/P&gt;&lt;P&gt;Is it possible to use keep statement just once?&lt;/P&gt;&lt;P&gt;Suppose I have a list of datasets name stored in a macro variable (e.g. the "name" column in sashelp.vcolumn) such that&amp;nbsp;&lt;/P&gt;&lt;P&gt;%put dsList;&lt;/P&gt;&lt;P&gt;returns&amp;nbsp;&lt;/P&gt;&lt;P&gt;dsName1 dsName2 dsName3 ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there a way to merges all the datasets in dsList by calling macro variable &amp;amp;dsList. (i.e. without actually typing the name of each dataset) while applying the same keep statement to each of them?&lt;/P&gt;&lt;P&gt;It would be great if I can do&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data dsout;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; merge &amp;amp;dsList. (keep=var1 var2 var3);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; by var1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but it is not valid.&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2018 09:43:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442816#M282776</guid>
      <dc:creator>liangchh0</dc:creator>
      <dc:date>2018-03-06T09:43:42Z</dc:date>
    </item>
    <item>
      <title>Re: Keep the same variables for multiple datasets</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442847#M282777</link>
      <description>&lt;P&gt;No.&amp;nbsp; You could write a more complex macro, in order to generate the list of data set names with (keep=) following each name.&amp;nbsp; That takes a bit more macro coding skill but is possible.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;******** EDITED:&amp;nbsp; I probably have just enough time to sketch this out so testing is up to you&amp;nbsp;...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Assuming that macro variables &amp;amp;VARLIST and &amp;amp;DSLIST already exist:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;%macro list_plus_keep;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; %global newlist;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; %let newlist=;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;%local k next_dataset;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; %do k=1 %to %sysfunc(countw(&amp;amp;dslist));&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let next_dataset = %scan(&amp;amp;dslist, &amp;amp;k);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let newlist = &amp;amp;newlist &amp;amp;next_dataset (keep=&amp;amp;varlist);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; %end;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;%mend list_plus_keep;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;%list_plus_keep&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This gives you a macro variable (&amp;amp;NEWLIST) with all the text you need to insert into the MERGE statement:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;data dsout;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;merge &amp;amp;newlist;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;by var1;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;run;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2018 15:43:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Keep-the-same-variables-for-multiple-datasets/m-p/442847#M282777</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-03-06T15:43:41Z</dc:date>
    </item>
  </channel>
</rss>

