<?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 Re: Mapping datalines as column headers in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71341#M20595</link>
    <description>@ data_null_: This is something that I've been doing previously, and it did work. The reason that we're looking to do it directly from a data step is that we need the mapping between var and var_SB for another purpose.&lt;BR /&gt;
&lt;BR /&gt;
Cheers,&lt;BR /&gt;
Jason</description>
    <pubDate>Sat, 11 Sep 2010 17:53:27 GMT</pubDate>
    <dc:creator>deleted_user</dc:creator>
    <dc:date>2010-09-11T17:53:27Z</dc:date>
    <item>
      <title>Mapping datalines as column headers</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71336#M20590</link>
      <description>Hi,&lt;BR /&gt;
&lt;BR /&gt;
I'm having a little bit of problem with some mapping ,and I'm hoping someone can help me.&lt;BR /&gt;
&lt;BR /&gt;
Below are 2 example data sets. what I'd like to do is select columns from data2 that appear as datalines for the variable var in data1 (ie var0, var1, var2) from data2, deleting the rest (in this case var44). So far I've been playing around with Symput, but I can't seem to figure anything out.&lt;BR /&gt;
&lt;BR /&gt;
Thanks,&lt;BR /&gt;
Jason&lt;BR /&gt;
&lt;BR /&gt;
data data1;&lt;BR /&gt;
length var $ 32;&lt;BR /&gt;
length var_SB $ 32;&lt;BR /&gt;
input&lt;BR /&gt;
var $ var_SB $&lt;BR /&gt;
;&lt;BR /&gt;
FORMAT var $32.;&lt;BR /&gt;
INFORMAT var $32.;&lt;BR /&gt;
FORMAT var_SB $32.;&lt;BR /&gt;
INFORMAT var_SB $32.;&lt;BR /&gt;
datalines;&lt;BR /&gt;
var0	asfasfg&lt;BR /&gt;
var1	var1_SB&lt;BR /&gt;
var2	var2_SB&lt;BR /&gt;
;&lt;BR /&gt;
run;&lt;BR /&gt;
data data2;&lt;BR /&gt;
input&lt;BR /&gt;
var0 var1 var2 var44;&lt;BR /&gt;
datalines;&lt;BR /&gt;
1 2 3 4&lt;BR /&gt;
2 4 6 8&lt;BR /&gt;
1 1 1 1&lt;BR /&gt;
2 3 4 3&lt;BR /&gt;
1 1 1 1&lt;BR /&gt;
;&lt;BR /&gt;
run;</description>
      <pubDate>Sat, 11 Sep 2010 15:21:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71336#M20590</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-09-11T15:21:44Z</dc:date>
    </item>
    <item>
      <title>Re: Mapping datalines as column headers</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71337#M20591</link>
      <description>There's no need to involve macro variables.  Investigate using either PROC SQL with a JOIN or possibly using a DATA step (against your two files sorted by a common variable BY list) and use a MERGE with a BY list of variables -- and on the MERGE statement you would use the IN= dataset option to detect when one or both files contributed a particular observation during the merge process.&lt;BR /&gt;
&lt;BR /&gt;
Scott Barry&lt;BR /&gt;
SBBWorks, Inc.&lt;BR /&gt;
&lt;BR /&gt;
Suggested Google advanced search argument, this topic / post:&lt;BR /&gt;
&lt;BR /&gt;
data step merge site:sas.com&lt;BR /&gt;
&lt;BR /&gt;
proc sql join site:sas.com</description>
      <pubDate>Sat, 11 Sep 2010 15:53:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71337#M20591</guid>
      <dc:creator>sbb</dc:creator>
      <dc:date>2010-09-11T15:53:54Z</dc:date>
    </item>
    <item>
      <title>Re: Mapping datalines as column headers</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71338#M20592</link>
      <description>I've spent a couple of hours playing around with this and I've finally come up with a solution, detailed below for anyone who has the same problem. For some reason the do loop had to be inside a macro.&lt;BR /&gt;
&lt;BR /&gt;
@sbb, I'm not entirely sure where you're coming from because the merge and the proc sql join rely on me having the headings in data1 as var0 var1 etc, rather than in the datalines. Feel free to correct me if I'm not getting the jist.&lt;BR /&gt;
&lt;BR /&gt;
Cheers&lt;BR /&gt;
Jason&lt;BR /&gt;
&lt;BR /&gt;
data _NULL_;&lt;BR /&gt;
		set variables end=last;&lt;BR /&gt;
		call symput ('var'!!left(_N_),compress(var));&lt;BR /&gt;
		call symput ('var_SB'!!left(_N_),compress(var_SB));&lt;BR /&gt;
		if last then call symput ('var_count',_N_);&lt;BR /&gt;
	run;&lt;BR /&gt;
&lt;BR /&gt;
%macro temp;&lt;BR /&gt;
data data3;&lt;BR /&gt;
set data2;&lt;BR /&gt;
keep %do i=1 %to &amp;amp;var_count;&lt;BR /&gt;
&amp;amp;&amp;amp;var&amp;amp;i&lt;BR /&gt;
%end;;;&lt;BR /&gt;
run;&lt;BR /&gt;
%mend;&lt;BR /&gt;
%temp;</description>
      <pubDate>Sat, 11 Sep 2010 17:11:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71338#M20592</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-09-11T17:11:31Z</dc:date>
    </item>
    <item>
      <title>Re: Mapping datalines as column headers</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71339#M20593</link>
      <description>You can avoid the macro by making a macro variable that is a list of the words in VAR.  This will work as long as the list is not longer than the maximum length of a macro variables, about 64k as I recall.  Should suffice for most problems.&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
data data1;&lt;BR /&gt;
   infile cards eof=eof;&lt;BR /&gt;
   length var $ 32;&lt;BR /&gt;
   length var_SB $ 32;&lt;BR /&gt;
   length keeplist $128;&lt;BR /&gt;
   retain keeplist;&lt;BR /&gt;
   input var var_SB;&lt;BR /&gt;
   keeplist = catx(' ',keeplist,var);&lt;BR /&gt;
   return;&lt;BR /&gt;
 eof:&lt;BR /&gt;
   call symputx('keeplist',keeplist); &lt;BR /&gt;
   stop;&lt;BR /&gt;
   datalines;&lt;BR /&gt;
var0 asfasfg&lt;BR /&gt;
var1 var1_SB&lt;BR /&gt;
var2 var2_SB&lt;BR /&gt;
;&lt;BR /&gt;
run;&lt;BR /&gt;
%put NOTE: KEEPLIST=&amp;amp;keeplist;&lt;BR /&gt;
&lt;BR /&gt;
data data2(keep=&amp;amp;keeplist);&lt;BR /&gt;
input var0 var1 var2 var44;&lt;BR /&gt;
datalines;&lt;BR /&gt;
1 2 3 4&lt;BR /&gt;
2 4 6 8&lt;BR /&gt;
1 1 1 1&lt;BR /&gt;
2 3 4 3&lt;BR /&gt;
1 1 1 1&lt;BR /&gt;
;&lt;BR /&gt;
run; &lt;BR /&gt;
[/pre]</description>
      <pubDate>Sat, 11 Sep 2010 17:22:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71339#M20593</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2010-09-11T17:22:06Z</dc:date>
    </item>
    <item>
      <title>Re: Mapping datalines as column headers</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71340#M20594</link>
      <description>I apologize, having incorrectly read what you wanted to accomplish.  Disregard my reply entirely, thanks.&lt;BR /&gt;
&lt;BR /&gt;
Scott Barry&lt;BR /&gt;
SBBWorks, Inc.</description>
      <pubDate>Sat, 11 Sep 2010 17:26:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71340#M20594</guid>
      <dc:creator>sbb</dc:creator>
      <dc:date>2010-09-11T17:26:56Z</dc:date>
    </item>
    <item>
      <title>Re: Mapping datalines as column headers</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71341#M20595</link>
      <description>@ data_null_: This is something that I've been doing previously, and it did work. The reason that we're looking to do it directly from a data step is that we need the mapping between var and var_SB for another purpose.&lt;BR /&gt;
&lt;BR /&gt;
Cheers,&lt;BR /&gt;
Jason</description>
      <pubDate>Sat, 11 Sep 2010 17:53:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Mapping-datalines-as-column-headers/m-p/71341#M20595</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-09-11T17:53:27Z</dc:date>
    </item>
  </channel>
</rss>

