<?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: Good way to summarise this data (counting and summing) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/820057#M323656</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;, thanks so much for your help.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;It almost worked for me, when I run your code exactly, the final entry (4th row) gives me:&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Age_group&lt;/TD&gt;&lt;TD&gt;Type&lt;/TD&gt;&lt;TD&gt;Time_period&lt;/TD&gt;&lt;TD&gt;n_people&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;total_payment&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2 to 3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;...&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but from the starting table, there is only one Person_ID (Person_ID = 910) with a Timepoint = 2 and Timepoint = 3, so for Time_period = "2 to 3", there is only n_people = 1, and also the total_payment is 100 (9th row in the starting table). I tried adjusting and debugging but I couldn't figure out what caused this double up&lt;/P&gt;</description>
    <pubDate>Thu, 23 Jun 2022 16:10:18 GMT</pubDate>
    <dc:creator>yellowyellowred</dc:creator>
    <dc:date>2022-06-23T16:10:18Z</dc:date>
    <item>
      <title>Good way to summarise this data (counting and summing)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/819884#M323608</link>
      <description>&lt;P&gt;I have a data set that looks like this:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Person_ID&lt;/TD&gt;&lt;TD&gt;Plan_ID&lt;/TD&gt;&lt;TD&gt;Age_group&lt;/TD&gt;&lt;TD&gt;Type&lt;/TD&gt;&lt;TD&gt;Timepoint&lt;/TD&gt;&lt;TD&gt;Payment&lt;/TD&gt;&lt;TD&gt;Result&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;901&lt;/TD&gt;&lt;TD&gt;101&lt;/TD&gt;&lt;TD&gt;10to20&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;901&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;119&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;10to20&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;400&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;901&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;129&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;10to20&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;250&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;905&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;203&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;905&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;287&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;150&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;905&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;301&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;910&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;401&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;900&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;910&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;450&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;800&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;910&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;500&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;910&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;600&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;150&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;700&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;10to20&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;300&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;800&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;10to20&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I want is to output a table like this:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Age_group&lt;/TD&gt;&lt;TD&gt;Type&lt;/TD&gt;&lt;TD&gt;Time_period&lt;/TD&gt;&lt;TD&gt;Number of people&lt;/TD&gt;&lt;TD&gt;Proportion of people with result=1 before payment&lt;/TD&gt;&lt;TD&gt;Proportion of people with result = 1 after payment&lt;/TD&gt;&lt;TD&gt;Total marginal payment&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;10to20&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;0 to 1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;50%&lt;/TD&gt;&lt;TD&gt;100%&lt;/TD&gt;&lt;TD&gt;800 (500 + 300)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;0 to 1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0%&lt;/TD&gt;&lt;TD&gt;50%&lt;/TD&gt;&lt;TD&gt;1000 (100 + 900)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1 to 2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;50%&lt;/TD&gt;&lt;TD&gt;100%&lt;/TD&gt;&lt;TD&gt;950 (800 + 150)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2 to 3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;100%&lt;/TD&gt;&lt;TD&gt;100%&lt;/TD&gt;&lt;TD&gt;100 (the payment for plan_ID = 500)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So the logic is this:&amp;nbsp;&amp;nbsp;&lt;BR /&gt;Each Person_ID can have multiple plan_ID's, which show as a unique row. For each Person_ID, their Age_group and Type will remain the same for different Plan_ID's. For each subsequent Plan_ID, the timepoint increments by 1. The first timepoint for a Person_ID will always start at 0.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;I am only looking at 1-step jumps, so from 0 to 1, 1 to 2, 2 to 3 etc, which is why the jump from 1 to 3 is excluded.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;The "number of people" column in the result table is the count of how many unique Person_ID's there are with the same Type and Time_period. The Time_period variable e.g. "0 to 1" represents data for people who have a "0" timepoint and a "1" timepoint.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;The "Proportion of people with result=1 before payment" column calculates the proportion of unique Person_ID's with "Result" = 1 at the beginning time point, e.g. for Time_period = "0 to 1", we look at the Timepoint = 0. Similarly for the following column.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;The total marginal payment sums up the total payment received by the age_group with that particular Type and Time_period which would have caused any change in the proportion. E.g. The first calculation of&amp;nbsp;800 (500 + 300) is for the Time_period = "0 to 1" meaning we only sum the payments at timepoint = 0. Similarly, for Time_period = "1 to 2", we only look at payments at Timepoint = 1.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;Can someone please show how I'd do this? I'm really bad at SAS. Hopefully I was clear in this exercise.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Note that the first four variables in the starting table can have a possibly infinite amount of values.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Here is code used to generate that starting table:&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;data person;
   input Person_ID $ Plan_ID $ Age_group $ Type $ Timepoint Payment Result;
   datalines;
901 101 10to20 A 0 500 0
901 119 10to20 A 1 400 1&lt;BR /&gt;901 129 10to20 A 3 250 0&lt;BR /&gt;905 203 21to30 B 0 100 0&lt;BR /&gt;905 287 21to30 B 1 150 0&lt;BR /&gt;905 301 21to30 B 2 100 1&lt;BR /&gt;910 401 21to30 B 0 900 0&lt;BR /&gt;910 450 21to30 B 1 800 1&lt;BR /&gt;910 500 21to30 B 2 100 1&lt;BR /&gt;920 700 10to20 A 0 300 1&lt;BR /&gt;920 800 10to20 A 1 100 1&lt;BR /&gt;;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jun 2022 09:30:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/819884#M323608</guid>
      <dc:creator>yellowyellowred</dc:creator>
      <dc:date>2022-06-23T09:30:18Z</dc:date>
    </item>
    <item>
      <title>Re: Good way to summarise this data (counting and summing)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/819975#M323633</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data person;
   input Person_ID $ Plan_ID $ Age_group $ Type $ Timepoint Payment Result;
   datalines;
901 101 10to20 A 0 500 0
901 119 10to20 A 1 400 1
901 129 10to20 A 3 250 0
905 203 21to30 B 0 100 0
905 287 21to30 B 1 150 0
905 301 21to30 B 2 100 1
910 401 21to30 B 0 900 0
910 450 21to30 B 1 800 1
910 500 21to30 B 2 100 1
910	600 21to30 B 3 150 1
920 700 10to20 A 0 300 1
920 800 10to20 A 1 100 1
;

proc sql;
create table level as
select distinct Age_group , Type , Timepoint
 from person
  order by 1,2,3;
quit;
data level1;
 set level;
 lag_Timepoint=lag(Timepoint);
 if Age_group=lag(Age_group) and Type=lag(Type) and dif(Timepoint)=1 then do; 
   first=lag_Timepoint; last=Timepoint;output;
 end;
 drop lag_Timepoint Timepoint;
run;


%macro report(Age_group=,Type=,first=,last=);
data have;
 set person;
 if Age_group="&amp;amp;Age_group." and Type="&amp;amp;Type."  and Timepoint in (&amp;amp;first. &amp;amp;last.);
run;
proc sql;
create table temp as
select "&amp;amp;Age_group." as Age_group length=80,"&amp;amp;Type." as Type length=80,
 catx(' ',&amp;amp;first.,'to',&amp;amp;last.) as Time_period length=80,
 (select count(distinct Person_ID) from have) as n_people,
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;first. and result=1)/
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;first. ) as prop_before_pay format=percent8.2,
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;last. and result=1)/
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;last. ) as prop_after_pay format=percent8.2,
 (select sum(payment) from have where Timepoint=&amp;amp;first.) as Total_payment
 from have(obs=1);
quit;
proc append base=want data=temp force;run;
run;
%mend;




proc delete data=want;run;
data _null_;
 set level1;
 call execute(catt('%report(Age_group=',Age_group,',Type=',Type,',first=',first,',last=',last,')'));
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 23 Jun 2022 13:19:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/819975#M323633</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-06-23T13:19:37Z</dc:date>
    </item>
    <item>
      <title>Re: Good way to summarise this data (counting and summing)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/820057#M323656</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;, thanks so much for your help.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;It almost worked for me, when I run your code exactly, the final entry (4th row) gives me:&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Age_group&lt;/TD&gt;&lt;TD&gt;Type&lt;/TD&gt;&lt;TD&gt;Time_period&lt;/TD&gt;&lt;TD&gt;n_people&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;total_payment&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;21to30&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;2 to 3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;...&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but from the starting table, there is only one Person_ID (Person_ID = 910) with a Timepoint = 2 and Timepoint = 3, so for Time_period = "2 to 3", there is only n_people = 1, and also the total_payment is 100 (9th row in the starting table). I tried adjusting and debugging but I couldn't figure out what caused this double up&lt;/P&gt;</description>
      <pubDate>Thu, 23 Jun 2022 16:10:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/820057#M323656</guid>
      <dc:creator>yellowyellowred</dc:creator>
      <dc:date>2022-06-23T16:10:18Z</dc:date>
    </item>
    <item>
      <title>Re: Good way to summarise this data (counting and summing)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/820216#M323721</link>
      <description>&lt;P&gt;OK. Maybe I understand what you mean now. Try this one :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data person;
   input Person_ID $ Plan_ID $ Age_group $ Type $ Timepoint Payment Result;
   datalines;
901 101 10to20 A 0 500 0
901 119 10to20 A 1 400 1
901 129 10to20 A 3 250 0
905 203 21to30 B 0 100 0
905 287 21to30 B 1 150 0
905 301 21to30 B 2 100 1
910 401 21to30 B 0 900 0
910 450 21to30 B 1 800 1
910 500 21to30 B 2 100 1
910 600 21to30 B 3 150 1
920 700 10to20 A 0 300 1
920 800 10to20 A 1 100 1
;

proc sql;
create table level as
select distinct Person_ID,Age_group , Type , Timepoint
 from person
  order by 1,2,3,4;
quit;
data level1;
 set level;
 lag_Timepoint=lag(Timepoint);
 if Person_ID=lag(Person_ID) and Age_group=lag(Age_group) and Type=lag(Type) and dif(Timepoint)=1 then do; 
   first=lag_Timepoint; last=Timepoint;output;
 end;
 drop lag_Timepoint Timepoint;
run;

proc sql;
create table level2 as
select distinct Age_group , Type , first,last
 from level1;
quit;

%macro report(Age_group=,Type=,first=,last=);
data key;
 set level1;
 if  Age_group="&amp;amp;Age_group." and Type="&amp;amp;Type."  and first=&amp;amp;first. and last=&amp;amp;last.;
run;
data key1;
 set key;
Timepoint=first;output;
Timepoint=last;output;
drop first last;
run;

data have;
if _n_=1 then do;
  if 0 then set key;
  declare hash h(dataset:'key1');
  h.definekey('Person_ID','Age_group','Type','Timepoint');
  h.definedone();
end;
 set person;
 if h.check()=0;
run;
proc sql;
create table temp as
select "&amp;amp;Age_group." as Age_group length=80,"&amp;amp;Type." as Type length=80,
 catx(' ',&amp;amp;first.,'to',&amp;amp;last.) as Time_period length=80,
 (select count(distinct Person_ID) from have) as n_people,
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;first. and result=1)/
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;first. ) as prop_before_pay format=percent8.2,
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;last. and result=1)/
 (select count(distinct Person_ID) from have where Timepoint=&amp;amp;last. ) as prop_after_pay format=percent8.2,
 (select sum(payment) from have where Timepoint=&amp;amp;first.) as Total_payment
 from have(obs=1);
quit;
proc append base=want data=temp force;run;
run;
%mend;




proc delete data=want;run;
data _null_;
 set level2;
 call execute(catt('%report(Age_group=',Age_group,',Type=',Type,',first=',first,',last=',last,')'));
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 24 Jun 2022 11:25:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Good-way-to-summarise-this-data-counting-and-summing/m-p/820216#M323721</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-06-24T11:25:19Z</dc:date>
    </item>
  </channel>
</rss>

