<?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: data step merge issue in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/811055#M319894</link>
    <description>&lt;P&gt;I paid less attention to this point in merge in my previous coding. Thanks everyone for help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 02 May 2022 12:49:48 GMT</pubDate>
    <dc:creator>Niugg2010</dc:creator>
    <dc:date>2022-05-02T12:49:48Z</dc:date>
    <item>
      <title>data step merge issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810658#M319687</link>
      <description>&lt;P&gt;I met a strange issue when I merge two datasets. Below is a simple example&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data a;
subjid="101-001";
do visit='vis01', 'vis02';
do param="aaa", 'bbb', 'ccc';
output;
end;
end;
run;
data b;
subjid="101-001";
do visit='vis01', 'vis02';
flag="Y";
output;
end;
run;
proc sort data=b; by subjid visit; run;
proc sort data=a; by subjid visit; run;

data c;
merge a b;
by subjid visit;
if param='aaa' then call missing(flag);
/* if visit='vis01' then call missing(flag);*/
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I merged a and b. I hope only when param='aaa'&amp;nbsp; then flag= missing. but if I run above code, all flag values are missing. I know if I do two data steps, I can resolve this issue. But I am not sure why this happened, and how I can avoild this issue. Please help me out. Thanks&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.JPG" style="width: 484px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/70986iEB0EDAE638238102/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.JPG" alt="Capture.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 29 Apr 2022 14:20:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810658#M319687</guid>
      <dc:creator>Niugg2010</dc:creator>
      <dc:date>2022-04-29T14:20:42Z</dc:date>
    </item>
    <item>
      <title>Re: data step merge issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810664#M319692</link>
      <description>&lt;P&gt;For each match, the dataset b is read only once (as there is only one observation for each BY group). After that, the value you set is retained throughout the group. As an exercise, set flag to some non-missing value.&lt;/P&gt;</description>
      <pubDate>Fri, 29 Apr 2022 14:28:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810664#M319692</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-04-29T14:28:41Z</dc:date>
    </item>
    <item>
      <title>Re: data step merge issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810665#M319693</link>
      <description>&lt;P&gt;All variables that are sourced from input dataset are "retained".&lt;/P&gt;
&lt;P&gt;That is what allows you attach the FLAG value from the one observation in B to ALL of the observations in A for that BY group.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once you change the value of FLAG it keeps that value until it is changed.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SAS will not read the next observation from B until the BY group values change.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To see if better use IF PARAM='bbb' instead of 'aaa'.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Just use a NEW variable for your desired result.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data c;
  merge a b;
  by subjid visit;
  if param ne 'aaa' then new_flag=flag;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;PRE&gt;Obs    subjid     visit    param    flag    new_flag

 1     101-001    vis01     aaa      Y
 2     101-001    vis01     bbb      Y         Y
 3     101-001    vis01     ccc      Y         Y
 4     101-001    vis02     aaa      Y
 5     101-001    vis02     bbb      Y         Y
 6     101-001    vis02     ccc      Y         Y
&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>Fri, 29 Apr 2022 14:29:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810665#M319693</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-04-29T14:29:48Z</dc:date>
    </item>
    <item>
      <title>Re: data step merge issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810667#M319695</link>
      <description>&lt;P&gt;Your code could work as is - only if the param "aaa" is the last value in each id.&amp;nbsp; I.e. you could replace the&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=a; by subjid visit; run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;with&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=a; by subjid visit descending param; run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Not an appealing solution.&amp;nbsp; You'll be better off with something like&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;'s suggestion.&lt;/P&gt;</description>
      <pubDate>Fri, 29 Apr 2022 14:33:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810667#M319695</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2022-04-29T14:33:42Z</dc:date>
    </item>
    <item>
      <title>Re: data step merge issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810687#M319706</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/100692"&gt;@Niugg2010&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;A simple way is to use Proc SQL. It works without any issue.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data a;
subjid="101-001";
do visit='vis01', 'vis02';
do param="aaa", 'bbb', 'ccc';
output;
end;
end;
run;
data b;
subjid="101-001";
do visit='vis01', 'vis02';
flag="Y";
output;
end;
run;
proc sql;
create table c as 
select a.*,
case 
when a.param="aaa" then ' '
else b.flag
end as Flag
from a left join b 
on a.subjid=b.subjid
and a.visit=b.visit;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The output would be&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sajid01_0-1651247097926.png" style="width: 679px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/70987i2FC00486B3E17688/image-dimensions/679x245?v=v2" width="679" height="245" role="button" title="Sajid01_0-1651247097926.png" alt="Sajid01_0-1651247097926.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 29 Apr 2022 15:45:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/810687#M319706</guid>
      <dc:creator>Sajid01</dc:creator>
      <dc:date>2022-04-29T15:45:21Z</dc:date>
    </item>
    <item>
      <title>Re: data step merge issue</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/811055#M319894</link>
      <description>&lt;P&gt;I paid less attention to this point in merge in my previous coding. Thanks everyone for help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 02 May 2022 12:49:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-step-merge-issue/m-p/811055#M319894</guid>
      <dc:creator>Niugg2010</dc:creator>
      <dc:date>2022-05-02T12:49:48Z</dc:date>
    </item>
  </channel>
</rss>

