<?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 how to flag based on a variable value in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344139#M79058</link>
    <description>&lt;P&gt;Dear,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need help in my code. One of support team help me with following code. But I need one more condition to include before assigning a flag value. I need TO ASSIGN &amp;nbsp;flag values only for obs with variable type='R'. Please help in the code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried by sorting the data have by "type" &amp;nbsp;"id". Then I used "if type='R' then do" &amp;nbsp;in the code. The output also flagged obs where type='M'.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ouput needed;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;id &amp;nbsp;type &amp;nbsp;test visit &amp;nbsp; &amp;nbsp;visitwindow &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;date &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Y&lt;/P&gt;&lt;P&gt;4 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;4 &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data have;
input id type $ test$ visit $  visitwindow vsdtc :yymmdd10.;
format vsdtc date9. ;
datalines;
1 R dbp 1 1 2014-07-30
1 R dbp un 1 2014-08-10
2 R dbp 1 1 2014-07-30
2 R dbp 1 1 2014-08-10
3 R dbp un 1 2014-07-30
3 R dbp un 1 2014-08-10
4 R dbp 1 1  2014-07-30    
1 M dbp 1 1 2014-07-30
1 M dbp un 1 2014-08-10
2 M dbp 1 1 2014-07-30
2 M dbp 1 1 2014-08-10
3 M dbp un 1 2014-07-30
3 M dbp un 1 2014-08-10
4 M dbp 1 1  2014-07-30 
run;

code:

data want;
 do i=1 by 1 until(last.id);
  set have;
  by id type;
  if visit=1 then idx=i;
 end;

 do j=1 by 1 until(last.id);
  set have;
  by id type;
  flag=' ';
  if idx=j then flag='Y'; 
  if last.id and missing(idx) then flag='Y';
  output;
 end;
end;
drop i j idx;
run;



&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 24 Mar 2017 17:45:34 GMT</pubDate>
    <dc:creator>knveraraju91</dc:creator>
    <dc:date>2017-03-24T17:45:34Z</dc:date>
    <item>
      <title>how to flag based on a variable value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344139#M79058</link>
      <description>&lt;P&gt;Dear,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need help in my code. One of support team help me with following code. But I need one more condition to include before assigning a flag value. I need TO ASSIGN &amp;nbsp;flag values only for obs with variable type='R'. Please help in the code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried by sorting the data have by "type" &amp;nbsp;"id". Then I used "if type='R' then do" &amp;nbsp;in the code. The output also flagged obs where type='M'.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ouput needed;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;id &amp;nbsp;type &amp;nbsp;test visit &amp;nbsp; &amp;nbsp;visitwindow &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;date &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; flag&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; &amp;nbsp; R &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp;un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Y&lt;/P&gt;&lt;P&gt;4 &amp;nbsp; &amp;nbsp; &amp;nbsp;R &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y&lt;/P&gt;&lt;P&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-08-10&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp; M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2014-07-30&lt;BR /&gt;2 &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30&lt;BR /&gt;3 &amp;nbsp; &amp;nbsp; M &amp;nbsp; &amp;nbsp; dbp &amp;nbsp; &amp;nbsp; un &amp;nbsp; &amp;nbsp; 1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-08-10&lt;BR /&gt;4 &amp;nbsp; &amp;nbsp;M &amp;nbsp; &amp;nbsp; &amp;nbsp;dbp &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2014-07-30&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data have;
input id type $ test$ visit $  visitwindow vsdtc :yymmdd10.;
format vsdtc date9. ;
datalines;
1 R dbp 1 1 2014-07-30
1 R dbp un 1 2014-08-10
2 R dbp 1 1 2014-07-30
2 R dbp 1 1 2014-08-10
3 R dbp un 1 2014-07-30
3 R dbp un 1 2014-08-10
4 R dbp 1 1  2014-07-30    
1 M dbp 1 1 2014-07-30
1 M dbp un 1 2014-08-10
2 M dbp 1 1 2014-07-30
2 M dbp 1 1 2014-08-10
3 M dbp un 1 2014-07-30
3 M dbp un 1 2014-08-10
4 M dbp 1 1  2014-07-30 
run;

code:

data want;
 do i=1 by 1 until(last.id);
  set have;
  by id type;
  if visit=1 then idx=i;
 end;

 do j=1 by 1 until(last.id);
  set have;
  by id type;
  flag=' ';
  if idx=j then flag='Y'; 
  if last.id and missing(idx) then flag='Y';
  output;
 end;
end;
drop i j idx;
run;



&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Mar 2017 17:45:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344139#M79058</guid>
      <dc:creator>knveraraju91</dc:creator>
      <dc:date>2017-03-24T17:45:34Z</dc:date>
    </item>
    <item>
      <title>Re: how to flag based on a variable value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344224#M79086</link>
      <description>&lt;P&gt;Nominally you can check for a given type using conditional processing.&amp;nbsp; Currently you have:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
  if last.id and missing(idx) then flag='Y';&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can add a comparison for TYPE:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
  if last.id and missing(idx) and type='R' then flag='Y';&lt;/CODE&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;However your code has some deeper issues.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A SORT is going to be needed before you can use the BY statement as it is currently written.&amp;nbsp; Have you tried the second DATA step?&amp;nbsp; Is it working for you?&lt;/P&gt;
&lt;P&gt;Visit is treated at numeric, but is character in HAVE.&amp;nbsp; There is an extra END statement.&amp;nbsp; Get the code working and see if it still does not do what you need it to do.&lt;/P&gt;</description>
      <pubDate>Sat, 25 Mar 2017 00:09:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344224#M79086</guid>
      <dc:creator>ArtC</dc:creator>
      <dc:date>2017-03-25T00:09:16Z</dc:date>
    </item>
    <item>
      <title>Re: how to flag based on a variable value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344226#M79088</link>
      <description>&lt;P&gt;Your code won't even run without some minor changes. However, given its current structure, it already provides what you want if provided with data that is properly sorted. e.g.,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;proc sort data=have out=want;
 by id type;
run;

data want;
 do i=1 by 1 until(last.id);
  set want;
  by id type;
  if visit='1' then idx=i;
 end;

 do j=1 by 1 until(last.id);
  set want;
  by id type;
  flag=' ';
  if idx=j then flag='Y'; 
  if last.id and missing(idx) then flag='Y';
  output;
 end;
drop i j idx;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;</description>
      <pubDate>Sat, 25 Mar 2017 00:23:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-flag-based-on-a-variable-value/m-p/344226#M79088</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-03-25T00:23:06Z</dc:date>
    </item>
  </channel>
</rss>

