<?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: Variable derivation by looking between observations in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376643#M276602</link>
    <description>&lt;P&gt;Thank you&amp;nbsp;&lt;SPAN&gt;art297 and&amp;nbsp;&lt;/SPAN&gt;Astounding for helping me find a solution to this problem!&lt;/P&gt;</description>
    <pubDate>Mon, 17 Jul 2017 16:35:05 GMT</pubDate>
    <dc:creator>ImSame</dc:creator>
    <dc:date>2017-07-17T16:35:05Z</dc:date>
    <item>
      <title>Variable derivation by looking between observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376351#M276597</link>
      <description>&lt;P&gt;I have the following dataset,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patient ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Year&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Admission &amp;nbsp;Number&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Problem&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to create a variable called “Keep” based on these data. &lt;STRONG&gt;Based on groupings by Patient ID and Year,&lt;/STRONG&gt; this variable should do as follows,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Assign the first admission in a year as Keep = 1, if all admissions in that year for a Patient ID have a problem value of 1 (see Patient ID 1 in the table below as an example).&lt;/LI&gt;&lt;LI&gt;Assign the first instance of an admission in a year with Problem value of 2 as Keep = 1, if the admissions in a year for a Patient ID contain both Problem values of 1 and 2 (see Patient ID 2 in the table below as an example).&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The resulting database should look as follows,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patient ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Year&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Admission &amp;nbsp;Number&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Problem&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Keep&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2010&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2011&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help would be much appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Sun, 16 Jul 2017 17:03:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376351#M276597</guid>
      <dc:creator>ImSame</dc:creator>
      <dc:date>2017-07-16T17:03:19Z</dc:date>
    </item>
    <item>
      <title>Re: Variable derivation by looking between observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376361#M276598</link>
      <description>&lt;P&gt;If a patient's problem 2 always comes by itself, or after a 1, and never reverts back and forth between 1 and 2 within a given year, you could use something like:&lt;/P&gt;
&lt;PRE&gt;data need;
  set have;
  recnum=_n_;
run;

proc sql noprint;
  create table want as
    select *, min(problem) as min, max(problem) as max
      from need
        group by Patient_ID,Year
           order by recnum
  ;
quit;

data want (drop=min max recnum);
  set want;
  by patient_ID year problem;
  if min eq max and first.problem then keep=1;
  else if min ne max and problem eq 2 and first.problem then keep=1;
  else keep=0;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 16 Jul 2017 17:54:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376361#M276598</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-07-16T17:54:00Z</dc:date>
    </item>
    <item>
      <title>Re: Variable derivation by looking between observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376362#M276599</link>
      <description>&lt;P&gt;Hi ART297,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your response.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There is no set order for the patient's problems, meaning 2 could come before 1 in a given year. Would the code you have provided not work in that situation?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 16 Jul 2017 17:58:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376362#M276599</guid>
      <dc:creator>ImSame</dc:creator>
      <dc:date>2017-07-16T17:58:41Z</dc:date>
    </item>
    <item>
      <title>Re: Variable derivation by looking between observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376368#M276600</link>
      <description>&lt;P&gt;I think this is what you are asking for:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;do until (last.year);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by patient year;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;max_problem = max(max_problem, problem);&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;do until (last.year);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by patient year;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if max_problem = problem and found=. then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; keep=1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; found=1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;else keep=0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop max_problem;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Sun, 16 Jul 2017 18:30:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376368#M276600</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-07-16T18:30:08Z</dc:date>
    </item>
    <item>
      <title>Re: Variable derivation by looking between observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376374#M276601</link>
      <description>&lt;P&gt;Yes, with a minor addition,but not if they're interspersed (e.g., 2 2 1 2 2). So, yes, the following would come out as desired:&lt;/P&gt;
&lt;PRE&gt;data have;
  input Patient_ID Year Admission_Number Problem;
  cards;
1 2010 1 1
1 2010 2 1
1 2010 3 1
1 2011 1 1
2 2010 1 1
2 2010 2 2
2 2010 3 2
2 2011 1 2
3 2010 1 2
3 2010 2 1
3 2010 3 1
3 2011 1 2
;

data need;
  set have;
  recnum=_n_;
run;

proc sql noprint;
  create table want as
    select *, min(problem) as min, max(problem) as max
      from need
        group by Patient_ID,Year
           order by recnum
  ;
quit;

data want (drop=min max recnum);
  set want;
  by patient_ID year problem notsorted;
  if min eq max and first.problem then keep=1;
  else if min ne max and problem eq 2 and first.problem then keep=1;
  else keep=0;
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 16 Jul 2017 19:36:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376374#M276601</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-07-16T19:36:18Z</dc:date>
    </item>
    <item>
      <title>Re: Variable derivation by looking between observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376643#M276602</link>
      <description>&lt;P&gt;Thank you&amp;nbsp;&lt;SPAN&gt;art297 and&amp;nbsp;&lt;/SPAN&gt;Astounding for helping me find a solution to this problem!&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jul 2017 16:35:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Variable-derivation-by-looking-between-observations/m-p/376643#M276602</guid>
      <dc:creator>ImSame</dc:creator>
      <dc:date>2017-07-17T16:35:05Z</dc:date>
    </item>
  </channel>
</rss>

