<?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 merging issue in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242293#M44970</link>
    <description>&lt;P&gt;I am trying to merge these two data sets a and b. &amp;nbsp;I want &amp;nbsp;this to be like this (missing id1 replaced by nonmissing id2 and keep their corresponding values as one observation and rest matching observations)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;want&lt;/P&gt;&lt;P&gt;1 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;2 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;3 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;4 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;5 0 &amp;nbsp;1&lt;/P&gt;&lt;PRE&gt;data a;
  infile cards ;
  input id1 x ;
  cards;
  1 0
  2 0
  3 0
  . 0
  5 0
  ;
run;

data b;
  infile cards;
  input id2 y;
  cards;
  1 1
  2 1
  3 1
  4 1
  5 1
  ;
run;

proc sql _method;
  create table want as
  select coalesce(id1,id2) as id, a.x, b.y
    from a as a
	   left join
	     b as b
	on a.id1=b.id2;
run;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 07 Jan 2016 23:11:29 GMT</pubDate>
    <dc:creator>SAS_inquisitive</dc:creator>
    <dc:date>2016-01-07T23:11:29Z</dc:date>
    <item>
      <title>merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242293#M44970</link>
      <description>&lt;P&gt;I am trying to merge these two data sets a and b. &amp;nbsp;I want &amp;nbsp;this to be like this (missing id1 replaced by nonmissing id2 and keep their corresponding values as one observation and rest matching observations)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;want&lt;/P&gt;&lt;P&gt;1 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;2 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;3 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;4 0 &amp;nbsp;1&lt;/P&gt;&lt;P&gt;5 0 &amp;nbsp;1&lt;/P&gt;&lt;PRE&gt;data a;
  infile cards ;
  input id1 x ;
  cards;
  1 0
  2 0
  3 0
  . 0
  5 0
  ;
run;

data b;
  infile cards;
  input id2 y;
  cards;
  1 1
  2 1
  3 1
  4 1
  5 1
  ;
run;

proc sql _method;
  create table want as
  select coalesce(id1,id2) as id, a.x, b.y
    from a as a
	   left join
	     b as b
	on a.id1=b.id2;
run;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Jan 2016 23:11:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242293#M44970</guid>
      <dc:creator>SAS_inquisitive</dc:creator>
      <dc:date>2016-01-07T23:11:29Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242297#M44971</link>
      <description>&lt;P&gt;How do you know the missing ID1 is matched up with ID2=4?&lt;/P&gt;
&lt;P&gt;It looks like it's based solely on position so maybe a dataset merge?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want2;
merge a b;
id=coalesce(id1, id2);
keep id x y;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 07 Jan 2016 23:36:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242297#M44971</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-01-07T23:36:28Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242304#M44972</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;&amp;nbsp;Thanks. &amp;nbsp;May be I did not put my question adequately. &amp;nbsp;I want to use another matching id,let's say next_id1 if first id (id1) is missing for some observations to match only those observations. It's like conditional match merge. This is because I have some missing values for id1 and those observations can be matched using second id (next_id1). The ideas is to match every observations from first data set to second data set. &amp;nbsp;I wonder if it is doable logic in one data step?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data a;
  input id1 next_id1 x;
cards;
1 2 0
2 3 0
. 1 0
; 

data a;
  input id2 next_id2 y;
cards;
1 2 1
2 3 1
3 1 1
; &lt;/PRE&gt;</description>
      <pubDate>Fri, 08 Jan 2016 03:02:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242304#M44972</guid>
      <dc:creator>SAS_inquisitive</dc:creator>
      <dc:date>2016-01-08T03:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242315#M44979</link>
      <description>&lt;P&gt;I'm not sure your problem is clearly defined yet, but here's another stab.&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as
select id1, id2, next_id1, next_id2, x, y, 
	coalesce(id1, id2) as want_id
from a 
join b
on a.id1=b.id2 OR a.next_id1=b.next_id2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 08 Jan 2016 03:38:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242315#M44979</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-01-08T03:38:59Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242322#M44981</link>
      <description>So any observations not matched by a.id1=b.id2 will be matched by a.next_id1=b.next_id2, right?</description>
      <pubDate>Fri, 08 Jan 2016 04:18:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242322#M44981</guid>
      <dc:creator>SAS_inquisitive</dc:creator>
      <dc:date>2016-01-08T04:18:43Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242323#M44982</link>
      <description>No, if either of those conditions are met then it will be matched. A sql update may be a better option but I'm not good at coding those.</description>
      <pubDate>Fri, 08 Jan 2016 04:25:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242323#M44982</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-01-08T04:25:42Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242326#M44983</link>
      <description>&lt;P&gt;The SQL solution is straitforward&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table c as
select *
from a inner join b
on a.id1=b.id2 or a.id1 is missing and a.next_id1=b.next_id2;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The data step equivalent is left as an exercise&amp;nbsp;&lt;img id="smileywink" class="emoticon emoticon-smileywink" src="https://communities.sas.com/i/smilies/16x16_smiley-wink.png" alt="Smiley Wink" title="Smiley Wink" /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Jan 2016 04:38:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242326#M44983</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-01-08T04:38:08Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242327#M44984</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats﻿&lt;/a&gt;. &amp;nbsp;This is great. &amp;nbsp;I'll attempt data step counterpart.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Jan 2016 04:47:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242327#M44984</guid>
      <dc:creator>SAS_inquisitive</dc:creator>
      <dc:date>2016-01-08T04:47:11Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242328#M44985</link>
      <description>&lt;P&gt;The SQL solution proposed above can be notoriously slow for large problems. This will be faster:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table d as
select * 
from a inner join b on a.id1=b.id2
where a.id1 is not missing
union all
select *
from a inner join b on a.next_id1=b.next_id2
where a.id1 is missing;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 08 Jan 2016 04:51:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242328#M44985</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-01-08T04:51:16Z</dc:date>
    </item>
    <item>
      <title>Re: merging issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242329#M44986</link>
      <description>&lt;P&gt;Don't waste too much time on the data step counterpart. This is a very chalenging problem (for me anyway).&lt;/P&gt;</description>
      <pubDate>Fri, 08 Jan 2016 04:54:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/merging-issue/m-p/242329#M44986</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-01-08T04:54:17Z</dc:date>
    </item>
  </channel>
</rss>

