<?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: Create start-stop dataset with time-varying covariates in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676701#M204065</link>
    <description>&lt;P&gt;Thanks for replying.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't think I explained my issue correctly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first dataset I have is as described above.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The second one is in the following format:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Yr&amp;nbsp;&amp;nbsp;&amp;nbsp; GDP_growth&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;2005&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.5%&lt;/P&gt;&lt;P&gt;…&lt;/P&gt;&lt;P&gt;2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.5%&lt;/P&gt;&lt;P&gt;2011&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; +0.25%&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So I want to combine these two datasets to create multiple observations for each firm ID where each observations contains a different value for GDP growth, dependent on the year.&amp;nbsp; So, for example, if a firm started in 2005 I want the first obs to be GDP growth for 2005, 2nd obs for that firm to be GDP growth for 2006 etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don;t think it's a simple case of merging the two datasets, as each firm starts at a different year.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
    <pubDate>Fri, 14 Aug 2020 12:04:42 GMT</pubDate>
    <dc:creator>Loobylou</dc:creator>
    <dc:date>2020-08-14T12:04:42Z</dc:date>
    <item>
      <title>Create start-stop dataset with time-varying covariates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676677#M204057</link>
      <description>&lt;P&gt;I am hoping to find a way to automatically create a dataset in SAS that I can use for Extended Cox Proportional Hazard regression using time-varying covariates.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset in the current format - albeit it this is simplified to aid understanding of my question!&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ID &amp;nbsp;Censored&amp;nbsp; SurvT(yrs) Start_Yr &amp;nbsp;End_Yr&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;+static Xn&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2010&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2014&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;10&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2005&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;2014&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;2005&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 2012&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a separate dataset that contains GDP growth for each of the years 2005-2014.&lt;/P&gt;&lt;P&gt;I want to merge these two datasets, and create a new dataset in the following format (so effectively each ID has multiple observations, representing each year with a different value for GDP growth):&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp; Censored&amp;nbsp;&amp;nbsp;&amp;nbsp; Age(yr)&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;Yr &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GDP_growth&amp;nbsp;&amp;nbsp; +static Xn&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;2010 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-0.5%&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2011&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;+0.25%&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2012&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;+1%&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;+0.25%&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone advise how I should go about this in SAS and if it is even possible?!&amp;nbsp; I have over 6000 IDs in my dataset, some with timeperiod of over 10 years, so I don't want to create this data manually!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Aug 2020 10:38:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676677#M204057</guid>
      <dc:creator>Loobylou</dc:creator>
      <dc:date>2020-08-14T10:38:14Z</dc:date>
    </item>
    <item>
      <title>Re: Create start-stop dataset with time-varying covariates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676678#M204058</link>
      <description>&lt;P&gt;You can merge the first dataset with second dataset on id and censored variables as these two variables are common between both datasets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=dataset1;
by id censored;
run;

proc sort data=dataset2;
by id censored;
run;

data want;
merge dataset1 dataset2;
by id censored;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Aug 2020 10:42:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676678#M204058</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2020-08-14T10:42:30Z</dc:date>
    </item>
    <item>
      <title>Re: Create start-stop dataset with time-varying covariates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676701#M204065</link>
      <description>&lt;P&gt;Thanks for replying.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't think I explained my issue correctly.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The first dataset I have is as described above.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The second one is in the following format:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Yr&amp;nbsp;&amp;nbsp;&amp;nbsp; GDP_growth&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;2005&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.5%&lt;/P&gt;&lt;P&gt;…&lt;/P&gt;&lt;P&gt;2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.5%&lt;/P&gt;&lt;P&gt;2011&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; +0.25%&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So I want to combine these two datasets to create multiple observations for each firm ID where each observations contains a different value for GDP growth, dependent on the year.&amp;nbsp; So, for example, if a firm started in 2005 I want the first obs to be GDP growth for 2005, 2nd obs for that firm to be GDP growth for 2006 etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don;t think it's a simple case of merging the two datasets, as each firm starts at a different year.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Fri, 14 Aug 2020 12:04:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/676701#M204065</guid>
      <dc:creator>Loobylou</dc:creator>
      <dc:date>2020-08-14T12:04:42Z</dc:date>
    </item>
    <item>
      <title>Re: Create start-stop dataset with time-varying covariates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/677136#M204237</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* 1st initial dataset */
data have1;
infile datalines dlm='09'x;
input ID Censored SurvT_yr Start_Yr End_Yr;
datalines;
1	0	5	2010	2014
2	0	10	2005	2014
3	1	8	2005	2012
run;

/* 2nd initial dataset 
set index to yr variable */
data have2(index=(yr));
infile datalines dlm='09'x;
	input yr gdp_growth;
datalines;
2005	0.1
2006	1.1
2007	2.1
2008	3.1
2009	4.1
2010	-0.5
2011	0.25
2012	1
2013	0.25
2014	9.1
2015	10.1
run;

/* create another dataset that loops through each year for have1 */
data _have1;
	set have1;
	by id;
	do until(last.id);
		do i=start_yr to end_yr;
			yr=i;
			output;
		end;
	end;
	drop i;
run;

/* merge both datasets  */
data want(rename=(yr=age_yr) drop=Start_Yr End_Yr survt_yr);
retain ID Censored yr Start_Yr End_Yr;
	set _have1;
	set have2 key=yr;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 17 Aug 2020 06:24:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/677136#M204237</guid>
      <dc:creator>hhinohar</dc:creator>
      <dc:date>2020-08-17T06:24:07Z</dc:date>
    </item>
    <item>
      <title>Re: Create start-stop dataset with time-varying covariates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/677138#M204238</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/340844"&gt;@Loobylou&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Thanks for replying.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I don't think I explained my issue correctly.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The first dataset I have is as described above.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The second one is in the following format:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Yr&amp;nbsp;&amp;nbsp;&amp;nbsp; GDP_growth&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;2005&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.5%&lt;/P&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;P&gt;2010&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -0.5%&lt;/P&gt;
&lt;P&gt;2011&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; +0.25%&lt;/P&gt;
&lt;P&gt;[...]&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To avoid such misunderstanding posting data in usable form and the expected result is highly recommended.&lt;/P&gt;
&lt;P&gt;If the second dataset is not to large, try:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   if 0 then set have1 have2;
   set have1;
   
   if _n_ = 1 then do;
      declare hash h(dataset: 'work.have2');
      h.defineKey('yr');
      h.defineData('gdp_growth');
      h.defineDone();
   end;

   do yr = start_yr to end_yr;
      if h.find() = 0 then do;
         output;
      end;
      else do;
         put 'WARNING: No gdp_growth for year ' yr;
      end;
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2020 07:23:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/677138#M204238</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2020-08-17T07:23:14Z</dc:date>
    </item>
    <item>
      <title>Re: Create start-stop dataset with time-varying covariates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/677852#M204531</link>
      <description>&lt;P&gt;Thanks for all your answers which I have found very helpful.&lt;/P&gt;&lt;P&gt;The solution is good - on small dataset though as took a while to process, so agree would not be as effective if dataset is very large.&amp;nbsp;&lt;/P&gt;&lt;P&gt;And thanks for the tip about posting in the community in future&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Aug 2020 16:31:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-start-stop-dataset-with-time-varying-covariates/m-p/677852#M204531</guid>
      <dc:creator>Loobylou</dc:creator>
      <dc:date>2020-08-19T16:31:31Z</dc:date>
    </item>
  </channel>
</rss>

