<?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: Reformatting short to long date data for survival analysis in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562569#M157606</link>
    <description>&lt;P&gt;Thank you&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp; and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Both solutions work like a charm.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 30 May 2019 14:10:58 GMT</pubDate>
    <dc:creator>ammarhm</dc:creator>
    <dc:date>2019-05-30T14:10:58Z</dc:date>
    <item>
      <title>Reformatting short to long date data for survival analysis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562257#M157493</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;
&lt;P&gt;I have a question regarding changing short to long data frame and splitting dates.&lt;/P&gt;
&lt;P&gt;Here is the initial data frame:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="744"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;Patient&lt;/TD&gt;
&lt;TD width="68"&gt;Initials&lt;/TD&gt;
&lt;TD width="33"&gt;age&lt;/TD&gt;
&lt;TD width="100"&gt;Entry&lt;/TD&gt;
&lt;TD width="103"&gt;Exit&lt;/TD&gt;
&lt;TD width="115"&gt;Event1&lt;/TD&gt;
&lt;TD width="123"&gt;Event2&lt;/TD&gt;
&lt;TD width="87"&gt;Weight&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;K89R&lt;/TD&gt;
&lt;TD width="68"&gt;AB&lt;/TD&gt;
&lt;TD width="33"&gt;34&lt;/TD&gt;
&lt;TD width="100"&gt;27-Jul-10&lt;/TD&gt;
&lt;TD width="103"&gt;17-Aug-13&lt;/TD&gt;
&lt;TD width="115"&gt;1-Mar-08&lt;/TD&gt;
&lt;TD width="123"&gt;2-May-11&lt;/TD&gt;
&lt;TD width="87"&gt;44&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;S33T&lt;/TD&gt;
&lt;TD width="68"&gt;ES&lt;/TD&gt;
&lt;TD width="33"&gt;55&lt;/TD&gt;
&lt;TD width="100"&gt;23-Jul-09&lt;/TD&gt;
&lt;TD width="103"&gt;12-Mar-12&lt;/TD&gt;
&lt;TD width="115"&gt;17-Sep-10&lt;/TD&gt;
&lt;TD width="123"&gt;.&lt;/TD&gt;
&lt;TD width="87"&gt;76&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What you see here, is that there is an entry and exit dates, with dates for the events 1 and 2, there is also a missing date for event 2 for the second patient because the event didn't happen. Also note that the event1 for the first patient happened before entry date.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What I want to get is the following file:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="744"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;Patient&lt;/TD&gt;
&lt;TD width="68"&gt;Initials&lt;/TD&gt;
&lt;TD width="33"&gt;age&lt;/TD&gt;
&lt;TD width="100"&gt;Entry&lt;/TD&gt;
&lt;TD width="103"&gt;Exit&lt;/TD&gt;
&lt;TD width="115"&gt;Event1&lt;/TD&gt;
&lt;TD width="123"&gt;Event2&lt;/TD&gt;
&lt;TD width="87"&gt;Weight&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;K89R&lt;/TD&gt;
&lt;TD width="68"&gt;AB&lt;/TD&gt;
&lt;TD width="33"&gt;34&lt;/TD&gt;
&lt;TD width="100"&gt;27/07/2010&lt;/TD&gt;
&lt;TD width="103"&gt;31/12/2010&lt;/TD&gt;
&lt;TD width="115"&gt;1&lt;/TD&gt;
&lt;TD width="123"&gt;0&lt;/TD&gt;
&lt;TD width="87"&gt;44&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;K89R&lt;/TD&gt;
&lt;TD width="68"&gt;AB&lt;/TD&gt;
&lt;TD width="33"&gt;34&lt;/TD&gt;
&lt;TD&gt;1/01/2011&lt;/TD&gt;
&lt;TD width="103"&gt;31/12/2011&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD width="87"&gt;44&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;K89R&lt;/TD&gt;
&lt;TD width="68"&gt;AB&lt;/TD&gt;
&lt;TD width="33"&gt;34&lt;/TD&gt;
&lt;TD&gt;1/01/2012&lt;/TD&gt;
&lt;TD&gt;31/12/2012&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD width="87"&gt;44&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;K89R&lt;/TD&gt;
&lt;TD width="68"&gt;AB&lt;/TD&gt;
&lt;TD width="33"&gt;34&lt;/TD&gt;
&lt;TD&gt;1/01/2013&lt;/TD&gt;
&lt;TD width="103"&gt;17/08/2013&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD width="87"&gt;44&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;S33T&lt;/TD&gt;
&lt;TD width="68"&gt;ES&lt;/TD&gt;
&lt;TD width="33"&gt;55&lt;/TD&gt;
&lt;TD width="100"&gt;23/07/2009&lt;/TD&gt;
&lt;TD width="103"&gt;31/12/2009&lt;/TD&gt;
&lt;TD width="115"&gt;0&lt;/TD&gt;
&lt;TD width="123"&gt;0&lt;/TD&gt;
&lt;TD width="87"&gt;76&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;S33T&lt;/TD&gt;
&lt;TD width="68"&gt;ES&lt;/TD&gt;
&lt;TD width="33"&gt;55&lt;/TD&gt;
&lt;TD&gt;1/01/2010&lt;/TD&gt;
&lt;TD&gt;31/12/2010&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD width="87"&gt;76&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;S33T&lt;/TD&gt;
&lt;TD width="68"&gt;ES&lt;/TD&gt;
&lt;TD width="33"&gt;55&lt;/TD&gt;
&lt;TD&gt;1/01/2011&lt;/TD&gt;
&lt;TD&gt;31/12/2011&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD width="87"&gt;76&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="115"&gt;S33T&lt;/TD&gt;
&lt;TD width="68"&gt;ES&lt;/TD&gt;
&lt;TD width="33"&gt;55&lt;/TD&gt;
&lt;TD&gt;1/01/2012&lt;/TD&gt;
&lt;TD width="103"&gt;12/03/2012&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD width="87"&gt;76&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What you notice here is that the entry to exit date period is split into individual rows per patient, each representing a year. The event columns are now coded as 0 (meaning the event has not yet happened) or 1 (the event happened) which is then carried over to the years after because the event has already happened.&lt;/P&gt;
&lt;P&gt;The age increases in every row per patient as time progresses&lt;/P&gt;
&lt;P&gt;The patient ID and initial remain the same as well as the weight.&lt;/P&gt;
&lt;P&gt;Could anyone please help with this, thank you&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 May 2019 13:22:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562257#M157493</guid>
      <dc:creator>ammarhm</dc:creator>
      <dc:date>2019-05-29T13:22:19Z</dc:date>
    </item>
    <item>
      <title>Re: Reformatting short to long date data for survival analysis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562297#M157505</link>
      <description>&lt;P&gt;Solved with a do until and using the intnx() function:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input patient :$4. entry :yymmdd10. exit :yymmdd10. event1 :yymmdd10. event2 :yymmdd10.;
format entry exit event1 event2 yymmddd10.;
datalines;
K98R 2010-07-27 2013-08-17 2008-03-01 2011-05-02
S33T 2009-07-23 2012-03-12 2010-09-17 .
;

data want;
set have (rename=(exit=_exit event1=_event1 event2=_event2));
format exit yymmddd10.;
exit = min(intnx('year',entry,0,'e'),_exit);
do until (exit = _exit);
  if _event1 ne . and _event1 &amp;lt;= exit then event1 = 1; else event1 = 0;
  if _event2 ne . and _event2 &amp;lt;= exit then event2 = 1; else event2 = 0;
  output;
  entry = intnx('year',entry,1,'b');
  exit = min(intnx('year',exit,1,'e'),_exit);
end;
output;
keep patient entry exit event1 event2;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;patient         entry          exit    event1    event2

 K98R      2010-07-27    2010-12-31       1         0  
 K98R      2011-01-01    2011-12-31       1         1  
 K98R      2012-01-01    2012-12-31       1         1  
 K98R      2013-01-01    2013-08-17       1         1  
 S33T      2009-07-23    2009-12-31       0         0  
 S33T      2010-01-01    2010-12-31       1         0  
 S33T      2011-01-01    2011-12-31       1         0  
 S33T      2012-01-01    2012-03-12       1         0  
&lt;/PRE&gt;</description>
      <pubDate>Wed, 29 May 2019 14:34:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562297#M157505</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-05-29T14:34:54Z</dc:date>
    </item>
    <item>
      <title>Re: Reformatting short to long date data for survival analysis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562551#M157600</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input patient :$4. entry :yymmdd10. exit :yymmdd10. event1 :yymmdd10. event2 :yymmdd10.;
format entry exit event1 event2 yymmdd10.;
datalines;
K98R 2010-07-27 2013-08-17 2008-03-01 2011-05-02
S33T 2009-07-23 2012-03-12 2010-09-17 .
;
data temp;
 set have;
 id+1;
 do date=entry to exit;
  year=year(date);
  flag1=(date&amp;gt;=event1 and not missing(event1));
  flag2=(date&amp;gt;=event2 and not missing(event2));
  output;
 end;
run;
proc sql;
create table want as
 select id,patient,min(date) as entry format=yymmdd10.,
 max(date) as exit format=yymmdd10.,
 max(flag1) as event1,
 max(flag2) as event2
  from temp
   group by id,patient,year;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 May 2019 13:24:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562551#M157600</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-05-30T13:24:26Z</dc:date>
    </item>
    <item>
      <title>Re: Reformatting short to long date data for survival analysis</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562569#M157606</link>
      <description>&lt;P&gt;Thank you&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp; and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Both solutions work like a charm.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 May 2019 14:10:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Reformatting-short-to-long-date-data-for-survival-analysis/m-p/562569#M157606</guid>
      <dc:creator>ammarhm</dc:creator>
      <dc:date>2019-05-30T14:10:58Z</dc:date>
    </item>
  </channel>
</rss>

