<?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: Code sequential observations into episodes, characterize episodes in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459421#M116684</link>
    <description>&lt;P&gt;You are absolutely on the right path ... create EP_N first, then go back and create the rest.&amp;nbsp; Here's an easy way.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;if first.id then ep_n = 1;&lt;/P&gt;
&lt;P&gt;else if dif_date &amp;gt; 60 then ep_n + 1;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Technically, you could compute DIF_DATE as you go ... it wouldn't need to be part of the incoming data.&amp;nbsp; But it's easy when DIF_DATE is already there.&lt;/P&gt;</description>
    <pubDate>Wed, 02 May 2018 17:17:54 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2018-05-02T17:17:54Z</dc:date>
    <item>
      <title>Code sequential observations into episodes, characterize episodes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459404#M116679</link>
      <description>&lt;P&gt;Hi, in the following data I have the first seven variables on the left from ID to FLAGSPEC. I want to make the last four variables on the right starting with EP_N. The records are sorted by ascending ID and DATE. One row per ID-DATE is permitted. A person does not have multiple rows for the same date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The data are event rows for coding into episodes. People can have more than one episode.&lt;/P&gt;&lt;P&gt;A new episode starts,&lt;BR /&gt;(1) when a person's very first data row is encountered, or&lt;BR /&gt;(2) when, for the same person, there are &amp;gt;60 days between one row's date and the next row's date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;DIF_DATE&lt;/TD&gt;&lt;TD&gt;A_TYPE&lt;/TD&gt;&lt;TD&gt;FLAGANY&lt;/TD&gt;&lt;TD&gt;FLAGREG&lt;/TD&gt;&lt;TD&gt;FLAGSPEC&lt;/TD&gt;&lt;TD&gt;EP_N&lt;/TD&gt;&lt;TD&gt;EP_TYPE&lt;/TD&gt;&lt;TD&gt;EP_TIME&lt;/TD&gt;&lt;TD&gt;EP_FREQ&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;06Jan2017&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;10Feb2017&lt;/TD&gt;&lt;TD&gt;35&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;15Feb2017&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;11May2017&lt;/TD&gt;&lt;TD&gt;85&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&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;18Sep2017&lt;/TD&gt;&lt;TD&gt;130&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;25Sep2017&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;04Dec2017&lt;/TD&gt;&lt;TD&gt;70&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;02Jul2016&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;09Jul2016&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;2&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 have these:&lt;BR /&gt;ID: identifies people, two here.&lt;BR /&gt;DATE: is the service date.&lt;BR /&gt;DIF_DATE: is the interval from one date to the next, for the same person.&lt;BR /&gt;A_TYPE: is a dichotomous qualitative variable.&lt;BR /&gt;FLAGANY: codes an episode's first row. If the episode only has one row then it's also the last row.&lt;BR /&gt;FLAGREG: if it's the episode's first row and A_TYPE=0, then FLAGREG=1, otherwise FLAGREG=0.&lt;BR /&gt;FLAGSPEC: if it's the episode's first row and A_TYPE=1, then FLAGSPEC=1, otherwise FLAGSPEC=0.&lt;BR /&gt;&lt;BR /&gt;I want to make these:&lt;BR /&gt;EP_N: an episode counter. It writes the same number to each episode's row(s); increments on the row when the person's next episode starts (when FLAGANY=1); and resets to 1 when encountering a new person.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;EP_TYPE: characterizes the episode as regular or special. If &lt;U&gt;all&lt;/U&gt; rows in the episode have A_TYPE=0, then EP_TYPE=0. If &lt;U&gt;any&lt;/U&gt; row in the episode has A_TYPE=1, then EP_TYPE=1.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;EP_TIME: the interval between the date of the episode's first and last rows, in days. If the episode is one row then EP_TIME=1.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;EP_FREQ: the number of rows in the episode, written to each episode row.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think that making EP_N is a key step because it would be a BY-group variable with ID. Thanks for any suggestions.&lt;/P&gt;</description>
      <pubDate>Wed, 02 May 2018 16:41:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459404#M116679</guid>
      <dc:creator>ck3</dc:creator>
      <dc:date>2018-05-02T16:41:46Z</dc:date>
    </item>
    <item>
      <title>Re: Code sequential observations into episodes, characterize episodes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459421#M116684</link>
      <description>&lt;P&gt;You are absolutely on the right path ... create EP_N first, then go back and create the rest.&amp;nbsp; Here's an easy way.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;if first.id then ep_n = 1;&lt;/P&gt;
&lt;P&gt;else if dif_date &amp;gt; 60 then ep_n + 1;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Technically, you could compute DIF_DATE as you go ... it wouldn't need to be part of the incoming data.&amp;nbsp; But it's easy when DIF_DATE is already there.&lt;/P&gt;</description>
      <pubDate>Wed, 02 May 2018 17:17:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459421#M116684</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-05-02T17:17:54Z</dc:date>
    </item>
    <item>
      <title>Re: Code sequential observations into episodes, characterize episodes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459452#M116703</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID	DATE :date7.	DIF_DATE	A_TYPE	FLAGANY	FLAGREG	FLAGSPEC;
format date date7.;
datalines;
1	6-Jan-17	.	0	1	1	0
1	10-Feb-17	35	0	0	0	0
1	15-Feb-17	5	0	0	0	0
1	11-May-17	85	0	1	1	0
1	18-Sep-17	130	0	1	1	0
1	25-Sep-17	7	1	0	0	0
1	4-Dec-17	70	1	1	0	1
2	2-Jul-16	.	0	1	1	0
2	9-Jul-16	7	1	0	0	0
;

data temp;
if 0 then set have;
EP_N=0;
do until(last.id);
set have;
by id date;
if FLAGANY then EP_N+1;
output;
end;
run;

proc sql;
create table want as
select *,max(A_TYPE=1) as EP_TYPE,ifn(intck('days',min(date),max(date))=0,1,intck('days',min(date),max(date))) as EP_TIME,count(EP_N) as EP_FREQ
from temp
group by id,EP_N;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 02 May 2018 18:14:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459452#M116703</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-05-02T18:14:46Z</dc:date>
    </item>
    <item>
      <title>Re: Code sequential observations into episodes, characterize episodes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459460#M116710</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;See what happens in your code if you replace&lt;/P&gt;
&lt;PRE&gt;select *,max(A_TYPE=1) as EP_TYPE,ifn(intck('days',min(date),max(date))=0,1,intck('days',min(date),max(date))) as EP_TIME,count(EP_N) as EP_FREQ
&lt;/PRE&gt;
&lt;P&gt;with&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;select *,max(A_TYPE=1) as EP_TYPE,Range(date) as EP_TIME,count(EP_N) as EP_FREQ&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Range is max(value) - min(value) and returns 0 if all the values are the same (one date)&lt;/P&gt;</description>
      <pubDate>Wed, 02 May 2018 18:52:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459460#M116710</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-05-02T18:52:17Z</dc:date>
    </item>
    <item>
      <title>Re: Code sequential observations into episodes, characterize episodes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459461#M116711</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13884"&gt;@ballardw&lt;/a&gt;&amp;nbsp;My oh My, Thank you sir. I envy your striking presence of mind. Jeez, why didn't i think of it. Thanks again for touch class catch. Simply neat......Cheers!&lt;/P&gt;</description>
      <pubDate>Wed, 02 May 2018 18:57:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/459461#M116711</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-05-02T18:57:57Z</dc:date>
    </item>
    <item>
      <title>Re: Code sequential observations into episodes, characterize episodes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/460437#M117033</link>
      <description>&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Mon, 07 May 2018 14:31:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Code-sequential-observations-into-episodes-characterize-episodes/m-p/460437#M117033</guid>
      <dc:creator>ck3</dc:creator>
      <dc:date>2018-05-07T14:31:25Z</dc:date>
    </item>
  </channel>
</rss>

