<?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: Sum variables conditionally depending on time of occurrence in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486809#M287227</link>
    <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Another educated guess:&amp;nbsp; You have transformed an easy problem into a horribly complex problem, by the way you are storing your data.&amp;nbsp; You would find this problem much easier if you stored a separate observation for each event.&amp;nbsp; So the first observation would become 3 observations:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=1&amp;nbsp; Disc_hf_hosp = 8000&amp;nbsp; Days_randhf_hosp = 60&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=2&amp;nbsp; Disc_hf_hosp = 7500&amp;nbsp; Days_randhf_hosp = 180&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=3&amp;nbsp; Disc_hf_hosp = 7000&amp;nbsp; Days_randhf_hosp = 730&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm not positive about this particular case, because I'm not 100% sure where you are headed with this as your intended outcome.&amp;nbsp; But it's very likely you can make your life easy by storing the data differently.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I was also guessing that there may be more than one hospital&amp;nbsp; and that there should be&amp;nbsp;a Hosp= as well.&lt;/P&gt;</description>
    <pubDate>Tue, 14 Aug 2018 20:17:03 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2018-08-14T20:17:03Z</dc:date>
    <item>
      <title>Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486796#M287224</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I am hoping someone can help me simplify my code.&amp;nbsp;&lt;BR /&gt;In short, I am trying to summarize costs per patient per event type, depending on when the event happened (specifically, within 90 days after randomization, within 1 year, within 2 years etc... The sums should therefore be cumulative.)&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Each event has a cost and also a corresponding variable specifying how many days after time 0 (randomization) the event occured.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My dataset looks something like this (simplified):&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ID&amp;nbsp; &amp;nbsp;dis_c_hf_hosp1&amp;nbsp; &amp;nbsp;dis_c_hf_hosp2&amp;nbsp; &amp;nbsp;dis_c_hf_hosp3&amp;nbsp; days_rand2hf_hosp1&amp;nbsp; &amp;nbsp;days_rand2hf_hosp2&amp;nbsp; &amp;nbsp;days_rand2hf_hosp3&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp;8000&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; 7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;60&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp;8500&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; &amp;nbsp;8000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;30&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp;8000&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;&amp;nbsp; 7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;60&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp;9000&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; &amp;nbsp;8500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;10&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp;8000&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; &amp;nbsp; 7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;60&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am repeating this step for many different clinical events and would therefore like a short, generalizable code. Currently, I am working in a very long macro that goes up to max 11 events per patient (max observed in dataset). It works, but there seems there should be an easier way to do this!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro time_costs (event, min, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11);

data time_costs_&amp;amp;event; set all_costs; 
/*costs within 90 days, excl. randomized implantation costs*/
c90_&amp;amp;event=0;
if days_rand2&amp;amp;event&amp;amp;min ne . and  days_rand2&amp;amp;event&amp;amp;min &amp;lt;= 90 then do c90_&amp;amp;event=dis_c_&amp;amp;event&amp;amp;min; end;
if days_rand2&amp;amp;event&amp;amp;_2 ne . and  days_rand2&amp;amp;event&amp;amp;_2  &amp;lt;= 90 then do c90_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min,dis_c_&amp;amp;event&amp;amp;_2); end;
if days_rand2&amp;amp;event&amp;amp;_3 ne . and  days_rand2&amp;amp;event&amp;amp;_3 &amp;lt;= 90 then do c90_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3); end;
if days_rand2&amp;amp;event&amp;amp;_4 ne . and  days_rand2&amp;amp;event&amp;amp;_4  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4); end;
if days_rand2&amp;amp;event&amp;amp;_5 ne . and  days_rand2&amp;amp;event&amp;amp;_5  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5); end;
if days_rand2&amp;amp;event&amp;amp;_6 ne . and  days_rand2&amp;amp;event&amp;amp;_6  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6); end;
if days_rand2&amp;amp;event&amp;amp;_7 ne . and  days_rand2&amp;amp;event&amp;amp;_7  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7 ); end;
if days_rand2&amp;amp;event&amp;amp;_8 ne . and  days_rand2&amp;amp;event&amp;amp;_8  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8); end;
if days_rand2&amp;amp;event&amp;amp;_9 ne . and  days_rand2&amp;amp;event&amp;amp;_9  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9 ); end;
if days_rand2&amp;amp;event&amp;amp;_10 ne . and  days_rand2&amp;amp;event&amp;amp;_10  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10 ); end;
if days_rand2&amp;amp;event&amp;amp;_11 ne . and  days_rand2&amp;amp;event&amp;amp;_11 &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10, dis_c_&amp;amp;event&amp;amp;_11); end;
/*costs within 1 year, excl. randomized implantation costs (also includes the first 90 days!!)*/
c365_&amp;amp;event=0;
if days_rand2&amp;amp;event&amp;amp;min ne . and  days_rand2&amp;amp;event&amp;amp;min &amp;lt;= 365 then do c365_&amp;amp;event=dis_c_&amp;amp;event&amp;amp;min; end;
if days_rand2&amp;amp;event&amp;amp;_2 ne . and  days_rand2&amp;amp;event&amp;amp;_2  &amp;lt;= 365 then do c365_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min,dis_c_&amp;amp;event&amp;amp;_2); end;
if days_rand2&amp;amp;event&amp;amp;_3 ne . and  days_rand2&amp;amp;event&amp;amp;_3 &amp;lt;= 365 then do c365_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3); end;
if days_rand2&amp;amp;event&amp;amp;_4 ne . and  days_rand2&amp;amp;event&amp;amp;_4  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4); end;
if days_rand2&amp;amp;event&amp;amp;_5 ne . and  days_rand2&amp;amp;event&amp;amp;_5  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5); end;
if days_rand2&amp;amp;event&amp;amp;_6 ne . and  days_rand2&amp;amp;event&amp;amp;_6  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6); end;
if days_rand2&amp;amp;event&amp;amp;_7 ne . and  days_rand2&amp;amp;event&amp;amp;_7  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7 ); end;
if days_rand2&amp;amp;event&amp;amp;_8 ne . and  days_rand2&amp;amp;event&amp;amp;_8  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8); end;
if days_rand2&amp;amp;event&amp;amp;_9 ne . and  days_rand2&amp;amp;event&amp;amp;_9  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9 ); end;
if days_rand2&amp;amp;event&amp;amp;_10 ne . and  days_rand2&amp;amp;event&amp;amp;_10  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10 ); end;
if days_rand2&amp;amp;event&amp;amp;_11 ne . and  days_rand2&amp;amp;event&amp;amp;_11 &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10, dis_c_&amp;amp;event&amp;amp;_11); end;
/*costs between year 1-2*/
c730_&amp;amp;event=0;
if days_rand2&amp;amp;event&amp;amp;min ne . and  days_rand2&amp;amp;event&amp;amp;min &amp;lt;= 730 then do c730_&amp;amp;event=dis_c_&amp;amp;event&amp;amp;min; end;
if days_rand2&amp;amp;event&amp;amp;_2 ne . and  days_rand2&amp;amp;event&amp;amp;_2  &amp;lt;= 730 then do c730_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min,dis_c_&amp;amp;event&amp;amp;_2); end;
if days_rand2&amp;amp;event&amp;amp;_3 ne . and  days_rand2&amp;amp;event&amp;amp;_3 &amp;lt;= 730 then do c730_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3); end;
if days_rand2&amp;amp;event&amp;amp;_4 ne . and  days_rand2&amp;amp;event&amp;amp;_4  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4); end;
if days_rand2&amp;amp;event&amp;amp;_5 ne . and  days_rand2&amp;amp;event&amp;amp;_5  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5); end;
if days_rand2&amp;amp;event&amp;amp;_6 ne . and  days_rand2&amp;amp;event&amp;amp;_6  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6); end;
if days_rand2&amp;amp;event&amp;amp;_7 ne . and  days_rand2&amp;amp;event&amp;amp;_7  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7 ); end;
if days_rand2&amp;amp;event&amp;amp;_8 ne . and  days_rand2&amp;amp;event&amp;amp;_8  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8); end;
if days_rand2&amp;amp;event&amp;amp;_9 ne . and  days_rand2&amp;amp;event&amp;amp;_9  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9 ); end;
if days_rand2&amp;amp;event&amp;amp;_10 ne . and  days_rand2&amp;amp;event&amp;amp;_10  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10 ); end;
if days_rand2&amp;amp;event&amp;amp;_11 ne . and  days_rand2&amp;amp;event&amp;amp;_11 &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10, dis_c_&amp;amp;event&amp;amp;_11); end;
/*costs between year 2-3*/
/*costs between year 3-4*/
/*costs between year 4-5*/
/*costs between year 5-6*/
/*formatting costs*/
format c90_&amp;amp;event c365_&amp;amp;event c730_&amp;amp;event 20.;
run;

%mend time_costs;

%time_costs (hf_hosp, 1,2, 3, 4, 5, 6, 7, 8, 9, 10, 11);&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;Thank you!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;- SAS rookie&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;Working in SAS 9.4.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 19:48:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486796#M287224</guid>
      <dc:creator>jbje</dc:creator>
      <dc:date>2018-08-14T19:48:33Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486799#M287225</link>
      <description>&lt;P&gt;If you can post a smaller fully worked example I think using MultiLabel Formats and PROC MEANS will do it for you.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please post some sample input data - 2 to 3 variables are fine - and the expected output that aligns with your input data. Also some clarifications around variable names may help....I can probably make an educated guess, but it's easier if you clarify it.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/226301"&gt;@jbje&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;I am hoping someone can help me simplify my code.&amp;nbsp;&lt;BR /&gt;In short, I am trying to summarize costs per patient per event type, depending on when the event happened (specifically, within 90 days after randomization, within 1 year, within 2 years etc... The sums should therefore be cumulative.)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Each event has a cost and also a corresponding variable specifying how many days after time 0 (randomization) the event occured.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My dataset looks something like this (simplified):&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ID&amp;nbsp; &amp;nbsp;dis_c_hf_hosp1&amp;nbsp; &amp;nbsp;dis_c_hf_hosp2&amp;nbsp; &amp;nbsp;dis_c_hf_hosp3&amp;nbsp; days_rand2hf_hosp1&amp;nbsp; &amp;nbsp;days_rand2hf_hosp2&amp;nbsp; &amp;nbsp;days_rand2hf_hosp3&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp;8000&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; 7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;60&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp;8500&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; &amp;nbsp;8000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;30&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp;8000&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;&amp;nbsp; 7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;60&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp;9000&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; &amp;nbsp;8500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;10&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;5&amp;nbsp; &amp;nbsp; &amp;nbsp;8000&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; &amp;nbsp; 7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;60&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; &amp;nbsp; &amp;nbsp;180&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; &amp;nbsp; &amp;nbsp;730&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I am repeating this step for many different clinical events and would therefore like a short, generalizable code. Currently, I am working in a very long macro that goes up to max 11 events per patient (max observed in dataset). It works, but there seems there should be an easier way to do this!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro time_costs (event, min, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11);

data time_costs_&amp;amp;event; set all_costs; 
/*costs within 90 days, excl. randomized implantation costs*/
c90_&amp;amp;event=0;
if days_rand2&amp;amp;event&amp;amp;min ne . and  days_rand2&amp;amp;event&amp;amp;min &amp;lt;= 90 then do c90_&amp;amp;event=dis_c_&amp;amp;event&amp;amp;min; end;
if days_rand2&amp;amp;event&amp;amp;_2 ne . and  days_rand2&amp;amp;event&amp;amp;_2  &amp;lt;= 90 then do c90_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min,dis_c_&amp;amp;event&amp;amp;_2); end;
if days_rand2&amp;amp;event&amp;amp;_3 ne . and  days_rand2&amp;amp;event&amp;amp;_3 &amp;lt;= 90 then do c90_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3); end;
if days_rand2&amp;amp;event&amp;amp;_4 ne . and  days_rand2&amp;amp;event&amp;amp;_4  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4); end;
if days_rand2&amp;amp;event&amp;amp;_5 ne . and  days_rand2&amp;amp;event&amp;amp;_5  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5); end;
if days_rand2&amp;amp;event&amp;amp;_6 ne . and  days_rand2&amp;amp;event&amp;amp;_6  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6); end;
if days_rand2&amp;amp;event&amp;amp;_7 ne . and  days_rand2&amp;amp;event&amp;amp;_7  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7 ); end;
if days_rand2&amp;amp;event&amp;amp;_8 ne . and  days_rand2&amp;amp;event&amp;amp;_8  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8); end;
if days_rand2&amp;amp;event&amp;amp;_9 ne . and  days_rand2&amp;amp;event&amp;amp;_9  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9 ); end;
if days_rand2&amp;amp;event&amp;amp;_10 ne . and  days_rand2&amp;amp;event&amp;amp;_10  &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10 ); end;
if days_rand2&amp;amp;event&amp;amp;_11 ne . and  days_rand2&amp;amp;event&amp;amp;_11 &amp;lt;= 90 then do c90_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10, dis_c_&amp;amp;event&amp;amp;_11); end;
/*costs within 1 year, excl. randomized implantation costs (also includes the first 90 days!!)*/
c365_&amp;amp;event=0;
if days_rand2&amp;amp;event&amp;amp;min ne . and  days_rand2&amp;amp;event&amp;amp;min &amp;lt;= 365 then do c365_&amp;amp;event=dis_c_&amp;amp;event&amp;amp;min; end;
if days_rand2&amp;amp;event&amp;amp;_2 ne . and  days_rand2&amp;amp;event&amp;amp;_2  &amp;lt;= 365 then do c365_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min,dis_c_&amp;amp;event&amp;amp;_2); end;
if days_rand2&amp;amp;event&amp;amp;_3 ne . and  days_rand2&amp;amp;event&amp;amp;_3 &amp;lt;= 365 then do c365_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3); end;
if days_rand2&amp;amp;event&amp;amp;_4 ne . and  days_rand2&amp;amp;event&amp;amp;_4  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4); end;
if days_rand2&amp;amp;event&amp;amp;_5 ne . and  days_rand2&amp;amp;event&amp;amp;_5  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5); end;
if days_rand2&amp;amp;event&amp;amp;_6 ne . and  days_rand2&amp;amp;event&amp;amp;_6  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6); end;
if days_rand2&amp;amp;event&amp;amp;_7 ne . and  days_rand2&amp;amp;event&amp;amp;_7  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7 ); end;
if days_rand2&amp;amp;event&amp;amp;_8 ne . and  days_rand2&amp;amp;event&amp;amp;_8  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8); end;
if days_rand2&amp;amp;event&amp;amp;_9 ne . and  days_rand2&amp;amp;event&amp;amp;_9  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9 ); end;
if days_rand2&amp;amp;event&amp;amp;_10 ne . and  days_rand2&amp;amp;event&amp;amp;_10  &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10 ); end;
if days_rand2&amp;amp;event&amp;amp;_11 ne . and  days_rand2&amp;amp;event&amp;amp;_11 &amp;lt;= 365 then do c365_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10, dis_c_&amp;amp;event&amp;amp;_11); end;
/*costs between year 1-2*/
c730_&amp;amp;event=0;
if days_rand2&amp;amp;event&amp;amp;min ne . and  days_rand2&amp;amp;event&amp;amp;min &amp;lt;= 730 then do c730_&amp;amp;event=dis_c_&amp;amp;event&amp;amp;min; end;
if days_rand2&amp;amp;event&amp;amp;_2 ne . and  days_rand2&amp;amp;event&amp;amp;_2  &amp;lt;= 730 then do c730_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min,dis_c_&amp;amp;event&amp;amp;_2); end;
if days_rand2&amp;amp;event&amp;amp;_3 ne . and  days_rand2&amp;amp;event&amp;amp;_3 &amp;lt;= 730 then do c730_&amp;amp;event=sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3); end;
if days_rand2&amp;amp;event&amp;amp;_4 ne . and  days_rand2&amp;amp;event&amp;amp;_4  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4); end;
if days_rand2&amp;amp;event&amp;amp;_5 ne . and  days_rand2&amp;amp;event&amp;amp;_5  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5); end;
if days_rand2&amp;amp;event&amp;amp;_6 ne . and  days_rand2&amp;amp;event&amp;amp;_6  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6); end;
if days_rand2&amp;amp;event&amp;amp;_7 ne . and  days_rand2&amp;amp;event&amp;amp;_7  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7 ); end;
if days_rand2&amp;amp;event&amp;amp;_8 ne . and  days_rand2&amp;amp;event&amp;amp;_8  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8); end;
if days_rand2&amp;amp;event&amp;amp;_9 ne . and  days_rand2&amp;amp;event&amp;amp;_9  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9 ); end;
if days_rand2&amp;amp;event&amp;amp;_10 ne . and  days_rand2&amp;amp;event&amp;amp;_10  &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10 ); end;
if days_rand2&amp;amp;event&amp;amp;_11 ne . and  days_rand2&amp;amp;event&amp;amp;_11 &amp;lt;= 730 then do c730_&amp;amp;event=
	sum(dis_c_&amp;amp;event&amp;amp;min, dis_c_&amp;amp;event&amp;amp;_2, dis_c_&amp;amp;event&amp;amp;_3, dis_c_&amp;amp;event&amp;amp;_4,  dis_c_&amp;amp;event&amp;amp;_5, dis_c_&amp;amp;event&amp;amp;_6,dis_c_&amp;amp;event&amp;amp;_7, 
	dis_c_&amp;amp;event&amp;amp;_8,dis_c_&amp;amp;event&amp;amp;_9, dis_c_&amp;amp;event&amp;amp;_10, dis_c_&amp;amp;event&amp;amp;_11); end;
/*costs between year 2-3*/
/*costs between year 3-4*/
/*costs between year 4-5*/
/*costs between year 5-6*/
/*formatting costs*/
format c90_&amp;amp;event c365_&amp;amp;event c730_&amp;amp;event 20.;
run;

%mend time_costs;

%time_costs (hf_hosp, 1,2, 3, 4, 5, 6, 7, 8, 9, 10, 11);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;- SAS rookie&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;Working in SAS 9.4.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 19:56:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486799#M287225</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-08-14T19:56:27Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486805#M287226</link>
      <description>&lt;P&gt;Another educated guess:&amp;nbsp; You have transformed an easy problem into a horribly complex problem, by the way you are storing your data.&amp;nbsp; You would find this problem much easier if you stored a separate observation for each event.&amp;nbsp; So the first observation would become 3 observations:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=1&amp;nbsp; Disc_hf_hosp = 8000&amp;nbsp; Days_randhf_hosp = 60&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=2&amp;nbsp; Disc_hf_hosp = 7500&amp;nbsp; Days_randhf_hosp = 180&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=3&amp;nbsp; Disc_hf_hosp = 7000&amp;nbsp; Days_randhf_hosp = 730&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm not positive about this particular case, because I'm not 100% sure where you are headed with this as your intended outcome.&amp;nbsp; But it's very likely you can make your life easy by storing the data differently.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 20:09:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486805#M287226</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-08-14T20:09:11Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486809#M287227</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Another educated guess:&amp;nbsp; You have transformed an easy problem into a horribly complex problem, by the way you are storing your data.&amp;nbsp; You would find this problem much easier if you stored a separate observation for each event.&amp;nbsp; So the first observation would become 3 observations:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=1&amp;nbsp; Disc_hf_hosp = 8000&amp;nbsp; Days_randhf_hosp = 60&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=2&amp;nbsp; Disc_hf_hosp = 7500&amp;nbsp; Days_randhf_hosp = 180&lt;/P&gt;
&lt;P&gt;ID=1&amp;nbsp; Event=3&amp;nbsp; Disc_hf_hosp = 7000&amp;nbsp; Days_randhf_hosp = 730&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm not positive about this particular case, because I'm not 100% sure where you are headed with this as your intended outcome.&amp;nbsp; But it's very likely you can make your life easy by storing the data differently.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I was also guessing that there may be more than one hospital&amp;nbsp; and that there should be&amp;nbsp;a Hosp= as well.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 20:17:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486809#M287227</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-08-14T20:17:03Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486815#M287228</link>
      <description>&lt;P&gt;Hi Reeza,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Thanks for you reply! I'll try to be more specific:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Variables:&lt;/P&gt;&lt;P&gt;dis_c_hf_hosp1 = discounted cost of 1st heart failure (hf)&amp;nbsp;hospitalization&lt;/P&gt;&lt;P&gt;dis_c_hf_hosp2 = discounted cost of 2nd heart failure (hf)&amp;nbsp;hospitalization&amp;nbsp;&lt;/P&gt;&lt;P&gt;(etc.)&lt;/P&gt;&lt;P&gt;days_rand2hf_hosp1 = days from randomization to 1st heart failure (hf)&amp;nbsp;hospitalization&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;days_rand2hf_hosp12 = days from randomization to&amp;nbsp;2nd&amp;nbsp;heart failure (hf)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;hospitalization&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;(etc.)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;c_90d_hf_hosp = cumulative costs within 90 days due to heart failure hospitalizations&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;c_1year_hf_hosp=cumulative costs within 1 year due to heart failure&amp;nbsp; hospitalization&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;(etc)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Variables I have:&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;ID&amp;nbsp; &amp;nbsp;dis_c_hf_hosp1&amp;nbsp; &amp;nbsp; dis_c_hf_hosp2&amp;nbsp; &amp;nbsp;days_rand2hf_hosp1&amp;nbsp; &amp;nbsp; days_rand2hf_hosp2&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;8000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7500&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;30&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; 180&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7500&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7000&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;180&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; &amp;nbsp; &amp;nbsp; &amp;nbsp;400&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;(etc)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Additional variables I want:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;ID ...&amp;nbsp; &amp;nbsp; c_90d_hf_hosp&amp;nbsp; &amp;nbsp; &amp;nbsp;c_1year_hf_hosp&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;8000&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;15500&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7500&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;(etc)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Thank you!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 20:22:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486815#M287228</guid>
      <dc:creator>jbje</dc:creator>
      <dc:date>2018-08-14T20:22:05Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486830#M287229</link>
      <description>&lt;P&gt;Hi Astounding,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I agree, the question should be really simple to answer and I probably am complicating things by the way I have programmed the dataset up until now.&amp;nbsp; I have also considered if changing the format to a long format&amp;nbsp; would help, but haven't been able to figure out a solution yet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The outcomes I am interested in are the sum of medical costs within 90 days, 1 year, 2 years etc. Heart failure hospitalization is just one of approx. 40 event types, that would have to be summarized in the end. In fact, the distribution of costs by event type is not necessary, so maybe in the long format I could just summarize the cost of ALL events happening within 90 days, 365 days etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will have a go at it. Thanks for your input!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 20:38:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486830#M287229</guid>
      <dc:creator>jbje</dc:creator>
      <dc:date>2018-08-14T20:38:35Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486862#M287230</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/226301"&gt;@jbje&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi Astounding,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I agree, the question should be really simple to answer and I probably am complicating things by the way I have programmed the dataset up until now.&amp;nbsp; I have also considered if changing the format to a long format&amp;nbsp; would help, but haven't been able to figure out a solution yet.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The outcomes I am interested in are the sum of medical costs within 90 days, 1 year, 2 years etc. Heart failure hospitalization is just one of approx. 40 event types, that would have to be summarized in the end. In fact, the distribution of costs by event type is not necessary, so maybe in the long format I could just summarize the cost of ALL events happening within 90 days, 365 days etc.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I will have a go at it. Thanks for your input!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;It would help to show what the desired results from your example data might be.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Does this look at all helpful?&lt;/P&gt;
&lt;PRE&gt;data have;
input ID dis_c_hf_hosp1 dis_c_hf_hosp2 dis_c_hf_hosp3 
         days_rand2hf_hosp1 days_rand2hf_hosp2 days_rand2hf_hosp3 
;
datalines;
1 8000 7500 7000 60 180 730
2 8500 8000 7000 30 180 730
3 8000 7500 7000 60 180 730
4 9000 8500 7000 10 180 730
5 8000 7500 7000 60 180 730
;
run;
data trans;
   set have;
   array dis  dis_c_hf_hosp1 dis_c_hf_hosp2 dis_c_hf_hosp3;
   array day  days_rand2hf_hosp1 days_rand2hf_hosp2 days_rand2hf_hosp3;
   do event= 1 to dim(dis);
      type = 'HF';
      dis_c= dis[event];
      days = day[event];
      cumcost = sum(cumcost,dis_c);
      if dis_c then output;
   end;
   keep id event type dis_c days cumcost;
run;
&lt;/PRE&gt;
&lt;P&gt;Without actually seeing your variable names it isn't possible to guess what other "type" of treatment or what ever this is. You mentioned something about heart failure so I assume that is what the HF stands for.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The above turns each occurrence of a dis_c_hf into an output observation and calculates a cumulative total for the dis_c.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am not sure exactly what summaries you want so can't go much further.&lt;/P&gt;</description>
      <pubDate>Tue, 14 Aug 2018 22:15:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486862#M287230</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-08-14T22:15:26Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486887#M287231</link>
      <description>&lt;P&gt;Here's an example of how this could be done. I first restructure the data into a long format using an array to do it in one step.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then I create the custom format for the 90 and one year intervals, then you're good to go.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;*type in sample data;

data have;
    infile cards dlm=',';
    input ID dis_c_hf_hosp1 dis_c_hf_hosp2 days_rand2hf_hosp1 days_rand2hf_hosp2;
    cards;
1, 8000, 7500, 30, 180
2, 7500, 7000, 180, 400
;
    ;
    ;;
run;

*transpose to a long format;

data flipped;
    set have;
    array dis(*) dis_:;
    array days(*) days_:;

    do Hospital=1 to dim(dis);
        Discounted_Cost=dis(hospital);
        Days_from_Rand=days(hospital);
        output;
    end;
    drop dis_: days_r:;
run;

*create format for periods of interest;

proc format;
    value duration_fmt (multilabel) low - 90='Within 90 days' 
        low - 365='Within one year' other='CHECKME';
    *I add this to catch things that don't fit for checking;
run;

*summarize totals;

proc means data=flipped n sum nway;
    class ID days_from_rand / mlf;
    *note mlf used for formatting;
    format days_from_rand duration_fmt.;
    var Discounted_Cost;
    ods output summary=want;
    *want is name of output data set;
run;&lt;/PRE&gt;
&lt;P&gt;Your data, in either postings don't really explain the event issue but hopefully this gets you started.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Aug 2018 03:11:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/486887#M287231</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-08-15T03:11:54Z</dc:date>
    </item>
    <item>
      <title>Re: Sum variables conditionally depending on time of occurrence</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/487514#M287233</link>
      <description>&lt;P&gt;Hi ballardw,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you, this was absolutely helpful. Sorry I have not been explicit enough - I am new to this community. I'll try to explain to next steps better:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Heart failure (hf_hosp) is only one out of about 40 events that can occur during follow-up, and each event can occur up to 11 times at different timepoints. I am interested in the cumulative cost of each event within specific time periods (90 days, 1 year - 8 years) and subsequently, I want summarize the events' cumulative costs to a total cumulative cost (per patient) within 90 days etc.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The coding of the other events is identical to the coding of heart failure. Here's an abbreviated dummy dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*dummy dataset*/
data have;
input ID dis_c_hf_hosp1 dis_c_hf_hosp2 dis_c_hf_hosp3 /*discounted costs for heart failure hospitalization events, no 1-3*/
         days_rand2hf_hosp1 days_rand2hf_hosp2 days_rand2hf_hosp3 /*days from randomization to heart failure hospitalizations*/
         dis_c_endocarditis1 dis_c_endocarditis2 dis_c_endocarditis3 /*discounted costs for endocarditis events, no 1-3*/
         days_rand2endocarditis1 days_rand2endocarditis2 days_rand2endocarditis3 /*days from randomization to endocarditis events*/
	 dis_c_mi1 dis_c_mi2 dis_c_mi3 /*discounted costs for myocardial infarction events, no 1-3*/
         days_rand2mi1 days_rand2mi2 days_rand2mi3 /*days from randomization to myocardial infarction 
	/*etc*/
;
datalines;
1 8000 7500 7000 60 180 730 28000 27500 27000 50 170 720 18000 17500 17000 70 190 740
2 8500 8000 7000 30 180 730 28000 27500 27000 50 170 720 18000 17500 17000 70 190 740
3 8000 7500 7000 60 180 730 28000 27500 27000 50 170 720 18000 17500 17000 70 190 740
4 9000 8500 7000 10 180 730 28000 27500 27000 50 170 720 18000 17500 17000 70 190 740
5 8000 7500 7000 60 180 730 28000 27500 27000 50 170 720 18000 17500 17000 70 190 740
;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;With your approach and using a macro, I am able to create a long dataset per event type, but I am not sure how to get from there to getting the cumulative costs per event type and summarize them all.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Variables wanted:&lt;/P&gt;&lt;P&gt;c90_hf_hosp (cumulative costs of heart failure within 90 days)&lt;/P&gt;&lt;P&gt;c1y_hf_hosp&lt;/P&gt;&lt;P&gt;c2y_hf_hosp&lt;/P&gt;&lt;P&gt;etc...&lt;/P&gt;&lt;P&gt;c90_endocarditis&amp;nbsp;&lt;SPAN&gt;(cumulative costs of&amp;nbsp;endocarditis within 90 days)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;c1y_endocarditis&lt;/P&gt;&lt;P&gt;c2y_endocarditis&lt;/P&gt;&lt;P&gt;etc...&lt;/P&gt;&lt;P&gt;c90_mi&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;(cumulative costs of myocardial infarction&amp;nbsp;within 90 days)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;c1y_mi&lt;/P&gt;&lt;P&gt;c2y_mi&lt;/P&gt;&lt;P&gt;etc...&lt;/P&gt;&lt;P&gt;c90_all_events&amp;nbsp;&lt;SPAN&gt;(total cumulative costs&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;within 90 days)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;c1y_all_events&lt;/P&gt;&lt;P&gt;c2y_all_events&lt;/P&gt;&lt;P&gt;etc...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this makes sense and thank you again!&lt;/P&gt;&lt;P&gt;Reeza's approach is somewhat similar, but I find the multilabel formats difficult to work with for the subsequent summation, but maybe that's just me!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Aug 2018 17:14:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Sum-variables-conditionally-depending-on-time-of-occurrence/m-p/487514#M287233</guid>
      <dc:creator>jbje</dc:creator>
      <dc:date>2018-08-16T17:14:34Z</dc:date>
    </item>
  </channel>
</rss>

