<?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: converting long iterative drug start / stop data to wide regimens in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616523#M180498</link>
    <description>&lt;P&gt;Where does regimen come in?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You're going to need to transpose this through proc transpose, but we need more information and to have all the data listed.&lt;/P&gt;</description>
    <pubDate>Fri, 10 Jan 2020 16:08:55 GMT</pubDate>
    <dc:creator>maguiremq</dc:creator>
    <dc:date>2020-01-10T16:08:55Z</dc:date>
    <item>
      <title>converting long iterative drug start / stop data to wide regimens</title>
      <link>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616503#M180496</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have data in the form&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp;drug_id&amp;nbsp; &amp;nbsp; &amp;nbsp; date_start&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; date_end&lt;/P&gt;&lt;P&gt;a&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;a&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;a&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/02&lt;/P&gt;&lt;P&gt;a&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/02&lt;/P&gt;&lt;P&gt;b ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to convert it to something like&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp; regimen1&amp;nbsp; &amp;nbsp;date_start_regimen1&amp;nbsp; &amp;nbsp; &amp;nbsp;data_stop_regimen1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; regimen2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;date_start_regimen2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; date_stop_regimen2&lt;/P&gt;&lt;P&gt;a&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;123&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/02&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 124&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1/1/02&lt;/P&gt;&lt;P&gt;b ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any suggestions?? I'm scratching my head, thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jan 2020 15:15:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616503#M180496</guid>
      <dc:creator>sometimesqs</dc:creator>
      <dc:date>2020-01-10T15:15:28Z</dc:date>
    </item>
    <item>
      <title>Re: converting long iterative drug start / stop data to wide regimens</title>
      <link>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616523#M180498</link>
      <description>&lt;P&gt;Where does regimen come in?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You're going to need to transpose this through proc transpose, but we need more information and to have all the data listed.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jan 2020 16:08:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616523#M180498</guid>
      <dc:creator>maguiremq</dc:creator>
      <dc:date>2020-01-10T16:08:55Z</dc:date>
    </item>
    <item>
      <title>Re: converting long iterative drug start / stop data to wide regimens</title>
      <link>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616529#M180503</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/306450"&gt;@sometimesqs&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is an attempt to achieve this job:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The following code considers that missing end dates means that the treatment is ongoing.&lt;/P&gt;
&lt;P&gt;if it is not the case, please change the method for imputation -&amp;gt; e.g. imputation of the first non-missing the value ahead.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines truncover;
	input ID $ drug_id date_start:mmddyy8. date_end:mmddyy8.;
	format date_start date_end:mmddyy8.;
	datalines;
a 1 1/1/01              
a 2 1/1/01          
a 3 1/1/01 1/1/02
a 4 1/1/02
;
run;

/* Temporary imputation of missing end_date for ongoing treatments */

data have2;
	set have;
	if date_end = . then date_end = today()+1;
run;

/* Expand dataset: create one row per day for each drug */

data have_exp;
	set have2;
	format day mmddyy8.;
	do day=date_start to date_end;
		output;
	end;
run;

proc sort data=have_exp;
	by id day;
run;

/* Transpose drugs to create combination */

proc transpose data=have_exp out=have_tr (drop=_name_);
	var drug_id;
	by id day;
run;

data have_regimen;
	set have_tr;
	regimen = tranwrd(cats(of col:),'.','');
	keep id day regimen;
run;

/* Creation of the variable counter, which is incremented each time a new combination is given */

data have_regimen2;
	set have_regimen;
	
	by id regimen notsorted;
	if first.id then counter=0;

	if first.combi then counter + 1;
run;

/* Creation of the final table */

proc sql;
	create table have3 as
	select id,
		regimen,
		min(day) as date_start_regimen format=mmddyy8.,
		max(day) as date_end_regimen format=mmddyy8.
	from have_regimen2
	group by id, regimen, counter
	order by id, regimen;
quit;

data have4;
	set have3;
	if date_end_regimen = today()+1 then date_end_regimen=.;
run;

/* Transposition*/

proc transpose data=have4 out=want_1 (drop=_name_) prefix=regimen;
	var regimen ;
	by id;
run;
proc transpose data=have4 out=want_2 (drop=_name_) prefix=date_start_regimen;
	var date_start_regimen ;
	by id;
run;
proc transpose data=have4 out=want_3 (drop=_name_) prefix=date_end_regimen;
	var date_end_regimen ;
	by id;
run;

data want;
	merge want_:;
	by id;
run;

proc print;
	var regimen1 date_start_regimen1 date_end_regimen1
		regimen2 date_start_regimen2 date_end_regimen2
		regimen3 date_start_regimen3 date_end_regimen3;
	id id;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 10 Jan 2020 16:21:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616529#M180503</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-01-10T16:21:38Z</dc:date>
    </item>
    <item>
      <title>Re: converting long iterative drug start / stop data to wide regimens</title>
      <link>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616533#M180504</link>
      <description>&lt;P&gt;thank you! this is exactly what i was going for&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jan 2020 16:27:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616533#M180504</guid>
      <dc:creator>sometimesqs</dc:creator>
      <dc:date>2020-01-10T16:27:18Z</dc:date>
    </item>
    <item>
      <title>Re: converting long iterative drug start / stop data to wide regimens</title>
      <link>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616534#M180505</link>
      <description>&lt;P&gt;Great !&lt;/P&gt;
&lt;P&gt;My pleasure&amp;nbsp;&lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jan 2020 16:27:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/converting-long-iterative-drug-start-stop-data-to-wide-regimens/m-p/616534#M180505</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-01-10T16:27:54Z</dc:date>
    </item>
  </channel>
</rss>

