<?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 retaining values from both row above and row below in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326717#M271569</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to define time periods on and off medication to use as&amp;nbsp;a time varying variable. I have start and stop dates for being ON&amp;nbsp;medication, but need to add rows with start and stop of being OFF medication.&lt;/P&gt;&lt;P&gt;So what I have is something along the lines of the following:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;start&lt;/TD&gt;&lt;TD&gt;stop&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20050101&lt;/TD&gt;&lt;TD&gt;20050801&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20051001&lt;/TD&gt;&lt;TD&gt;20051201&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;And what I need is this:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;start&lt;/TD&gt;&lt;TD&gt;stop&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20050101&lt;/TD&gt;&lt;TD&gt;20050801&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20050801&lt;/TD&gt;&lt;TD&gt;20051001&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20051001&lt;/TD&gt;&lt;TD&gt;20051201&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've been trying to use the retain function, but am at a loss on how to get the value of the start date on the row BELOW to use as the stop date on a new row.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any ideas?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;</description>
    <pubDate>Mon, 23 Jan 2017 14:42:43 GMT</pubDate>
    <dc:creator>Brander</dc:creator>
    <dc:date>2017-01-23T14:42:43Z</dc:date>
    <item>
      <title>retaining values from both row above and row below</title>
      <link>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326717#M271569</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to define time periods on and off medication to use as&amp;nbsp;a time varying variable. I have start and stop dates for being ON&amp;nbsp;medication, but need to add rows with start and stop of being OFF medication.&lt;/P&gt;&lt;P&gt;So what I have is something along the lines of the following:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;start&lt;/TD&gt;&lt;TD&gt;stop&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20050101&lt;/TD&gt;&lt;TD&gt;20050801&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20051001&lt;/TD&gt;&lt;TD&gt;20051201&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;And what I need is this:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;start&lt;/TD&gt;&lt;TD&gt;stop&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20050101&lt;/TD&gt;&lt;TD&gt;20050801&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20050801&lt;/TD&gt;&lt;TD&gt;20051001&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;20051001&lt;/TD&gt;&lt;TD&gt;20051201&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've been trying to use the retain function, but am at a loss on how to get the value of the start date on the row BELOW to use as the stop date on a new row.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any ideas?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;</description>
      <pubDate>Mon, 23 Jan 2017 14:42:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326717#M271569</guid>
      <dc:creator>Brander</dc:creator>
      <dc:date>2017-01-23T14:42:43Z</dc:date>
    </item>
    <item>
      <title>Re: retaining values from both row above and row below</title>
      <link>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326722#M271570</link>
      <description>&lt;P&gt;Always post test data as a datastep, we can't see structure otherwise.&lt;/P&gt;
&lt;P&gt;How about:&lt;/P&gt;
&lt;PRE&gt;data have;
  input id	start	stop	Med;
datalines;
1	20050101	20050801	1
1	20051001	20051201	1
;
run;

/* First pass, get start */
data want (drop=lstst);
  set have;
  by id;
  retain lstst;
  if first.id then do;
    start_updated=start;
    end_updated=stop;
    output;
    lstst=stop;
  end;
  else do;
    if start ne lstst then do;
      start_updated=lstst;
      end_updated=start;
      output;
      start_updated=start;
      end_updated=stop;
      output;
    end;
    else output;
    lstst=stop;
  end;
run;

&lt;/PRE&gt;</description>
      <pubDate>Mon, 23 Jan 2017 14:53:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326722#M271570</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2017-01-23T14:53:27Z</dc:date>
    </item>
    <item>
      <title>Re: retaining values from both row above and row below</title>
      <link>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326729#M271571</link>
      <description>&lt;P&gt;It's&amp;nbsp;easier to output the observations in a different order.&amp;nbsp; You can always re-sort them later if necessary.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=have;&lt;/P&gt;
&lt;P&gt;by id start;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want (drop=prior_stop);&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;prior_stop = lag(stop);&lt;/P&gt;
&lt;P&gt;output;&lt;/P&gt;
&lt;P&gt;if first.id=0 and start &amp;gt; prior_stop;&lt;/P&gt;
&lt;P&gt;med=0;&lt;/P&gt;
&lt;P&gt;stop = start;&lt;/P&gt;
&lt;P&gt;start = prior_stop;&lt;/P&gt;
&lt;P&gt;output;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Jan 2017 15:06:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326729#M271571</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-01-23T15:06:22Z</dc:date>
    </item>
    <item>
      <title>Re: retaining values from both row above and row below</title>
      <link>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326734#M271572</link>
      <description>&lt;P&gt;Hi RW9,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much for your reply! It really seemed to solve my problem!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm sorry for not posting any test data, it's the first time I'm using this forum.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Gustaf&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Jan 2017 15:09:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/retaining-values-from-both-row-above-and-row-below/m-p/326734#M271572</guid>
      <dc:creator>Brander</dc:creator>
      <dc:date>2017-01-23T15:09:20Z</dc:date>
    </item>
  </channel>
</rss>

