<?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: need to find Monthly average balance from latest balance without intermediate data step creation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501374#M133675</link>
    <description>&lt;P&gt;I am not sure I follow.&amp;nbsp; B only has one record in September, so it really doesn't matter how many days, the average will always be 5000 not 3000.&amp;nbsp; I have coded it to do days anyways.&amp;nbsp; Or perhaps there is some other logic not mentioned?&lt;/P&gt;
&lt;PRE&gt;data have;
  informat date ddmmyy10.;
  input cust_id $ date balance;
datalines;
A   01/09/2018   1000
A   08/09/2018   500
A   20/09/2018   2500
A   27/09/2018   50000
B   27/08/2018   1000
B   15/09/2018   5000
;
run;

data want (keep=cust_id average);
  set have (where=(month(date)=9));
  by cust_id;
  retain overall days lstdt lstamt;
  if first.cust_id and last.cust_id then do;
    average=(balance*(date-intnx('month',date,0,"e")))/(date-intnx('month',date,0,"e"));
    output;
  end;
  else if first.cust_id then do;
    overall=balance;
    days=1;
    lstdt=date;
    lstamt=balance;
  end;
  else if last.cust_id then do;
    do i=lstdt+1 to date;
      overall=overall+lstamt;
      days=days+1;
    end;
    do i=date+1 to intnx('month',date,0,"e");
      overall=overall+balance;
      days=days+1;
    end;
    average=balance/days;
    output;
  end;
  else do;
    do i=lstdt+1 to date;
      overall=overall+lstamt;
      days=days+1;
    end;
    lstdt=date;
    lstamt=balance;
  end;
run;&lt;/PRE&gt;</description>
    <pubDate>Thu, 04 Oct 2018 08:19:37 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2018-10-04T08:19:37Z</dc:date>
    <item>
      <title>need to find Monthly average balance from latest balance without intermediate data step creation.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501356#M133669</link>
      <description>&lt;P&gt;HI, I want to find out September monthly average balance of each customer from below table.&lt;/P&gt;&lt;P&gt;Here table has record only when customers previous balance is changed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Input dataset&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;cust_id&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;balance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;01/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;08/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;20/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;27/09/2018&lt;/TD&gt;&lt;TD&gt;50000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;27/08/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;15/09/2018&lt;/TD&gt;&lt;TD&gt;5000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;one way is, I can create another intermediate data set to fill in between dates like below and can take average balance by simple query - sel cust_id, Avg(balance) from table 2 where date between '01sep2018'd and '30sep2018'd group by cust_id.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As customer size is in Billion and due to space constraint, i couldn't create such an intermediate step. can anyone help me to find out out average balance for each customer without intermediate step.&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Intermediate dataset&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;cust_id&lt;/TD&gt;&lt;TD&gt;date&lt;/TD&gt;&lt;TD&gt;balance&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;01/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;02/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;03/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;04/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;05/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;06/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;07/09/2018&lt;/TD&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;08/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;09/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;10/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;11/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;12/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;13/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;14/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;15/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;16/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;17/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;18/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;19/09/2018&lt;/TD&gt;&lt;TD&gt;500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;20/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;21/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;22/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;23/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;24/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;25/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;26/09/2018&lt;/TD&gt;&lt;TD&gt;2500&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;27/09/2018&lt;/TD&gt;&lt;TD&gt;50000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;28/09/2018&lt;/TD&gt;&lt;TD&gt;50000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;29/09/2018&lt;/TD&gt;&lt;TD&gt;50000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;30/09/2018&lt;/TD&gt;&lt;TD&gt;50000&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Thu, 04 Oct 2018 07:21:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501356#M133669</guid>
      <dc:creator>aranganayagi</dc:creator>
      <dc:date>2018-10-04T07:21:22Z</dc:date>
    </item>
    <item>
      <title>Re: need to find Monthly average balance from latest balance without intermediate data step creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501358#M133671</link>
      <description>&lt;P&gt;Post test data in the form of a datastep in future, not as text or attachments:&lt;/P&gt;
&lt;PRE&gt;data have;
  informat date ddmmyy10.;
  input cust_id $ date balance;
datalines;
A   01/09/2018   1000
A   08/09/2018   500
A   20/09/2018   2500
A   27/09/2018   50000
;
run;

data want (keep=cust_id average);
  set have;
  by cust_id;
  retain overall days lstdt lstamt;
  if first.cust_id then do;
    overall=balance;
    days=1;
    lstdt=date;
    lstamt=balance;
  end;
  else if last.cust_id then do;
    do i=lstdt+1 to date;
      overall=overall+lstamt;
      days=days+1;
    end;
    do i=date+1 to intnx('month',date,0,"e");
      overall=overall+balance;
      days=days+1;
    end;
    average=balance/days;
    output;
  end;
  else do;
    do i=lstdt+1 to date;
      overall=overall+lstamt;
      days=days+1;
    end;
    lstdt=date;
    lstamt=balance;
  end;
run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 04 Oct 2018 07:34:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501358#M133671</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-10-04T07:34:29Z</dc:date>
    </item>
    <item>
      <title>Re: need to find Monthly average balance from latest balance without intermediate data step creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501365#M133674</link>
      <description>&lt;P&gt;Hi, Many thanks. It really helps.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On my example, customer B has different scenario.&amp;nbsp; can you please help to including B's scenario as well.&lt;/P&gt;&lt;P&gt;I want to find out September month average balance which is 3000 for B.&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;informat date ddmmyy10.;&lt;/P&gt;&lt;P&gt;input cust_id $ date balance;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;B 27/08/2018 1000&lt;/P&gt;&lt;P&gt;B 15/09/2018 5000&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Oct 2018 07:50:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501365#M133674</guid>
      <dc:creator>aranganayagi</dc:creator>
      <dc:date>2018-10-04T07:50:26Z</dc:date>
    </item>
    <item>
      <title>Re: need to find Monthly average balance from latest balance without intermediate data step creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501374#M133675</link>
      <description>&lt;P&gt;I am not sure I follow.&amp;nbsp; B only has one record in September, so it really doesn't matter how many days, the average will always be 5000 not 3000.&amp;nbsp; I have coded it to do days anyways.&amp;nbsp; Or perhaps there is some other logic not mentioned?&lt;/P&gt;
&lt;PRE&gt;data have;
  informat date ddmmyy10.;
  input cust_id $ date balance;
datalines;
A   01/09/2018   1000
A   08/09/2018   500
A   20/09/2018   2500
A   27/09/2018   50000
B   27/08/2018   1000
B   15/09/2018   5000
;
run;

data want (keep=cust_id average);
  set have (where=(month(date)=9));
  by cust_id;
  retain overall days lstdt lstamt;
  if first.cust_id and last.cust_id then do;
    average=(balance*(date-intnx('month',date,0,"e")))/(date-intnx('month',date,0,"e"));
    output;
  end;
  else if first.cust_id then do;
    overall=balance;
    days=1;
    lstdt=date;
    lstamt=balance;
  end;
  else if last.cust_id then do;
    do i=lstdt+1 to date;
      overall=overall+lstamt;
      days=days+1;
    end;
    do i=date+1 to intnx('month',date,0,"e");
      overall=overall+balance;
      days=days+1;
    end;
    average=balance/days;
    output;
  end;
  else do;
    do i=lstdt+1 to date;
      overall=overall+lstamt;
      days=days+1;
    end;
    lstdt=date;
    lstamt=balance;
  end;
run;&lt;/PRE&gt;</description>
      <pubDate>Thu, 04 Oct 2018 08:19:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501374#M133675</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-10-04T08:19:37Z</dc:date>
    </item>
    <item>
      <title>Re: need to find Monthly average balance from latest balance without intermediate data step creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501377#M133676</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/59319"&gt;@aranganayagi&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi, Many thanks. It really helps.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;On my example, customer B has different scenario.&amp;nbsp; can you please help to including B's scenario as well.&lt;/P&gt;
&lt;P&gt;I want to find out September month average balance which is 3000 for B.&lt;/P&gt;
&lt;P&gt;data have;&lt;/P&gt;
&lt;P&gt;informat date ddmmyy10.;&lt;/P&gt;
&lt;P&gt;input cust_id $ date balance;&lt;/P&gt;
&lt;P&gt;datalines;&lt;/P&gt;
&lt;P&gt;B 27/08/2018 1000&lt;/P&gt;
&lt;P&gt;B 15/09/2018 5000&lt;/P&gt;
&lt;P&gt;;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I guess you want to carry over from a previous month, if such exists:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input cust_id :$1. date :ddmmyy10. balance;
format date ddmmyy10.;
cards;
A 01/09/2018 1000
A 08/09/2018 500
A 20/09/2018 2500
A 27/09/2018 50000
B 27/08/2018 1000
B 15/09/2018 5000
;
run;

data int;
set have;
set
  have (
    firstobs=2
    keep=cust_id date balance
    rename=(cust_id=nextcust date=nextdate balance=nextbal)
  )
  have (obs=1 drop=_all_)
;
if nextcust = cust_id
then do;
  if intck('month',date, nextdate) &amp;gt; 0
  then do;
    weight = intnx('month',date,0,'e') - date + 1;
    weighted = balance * weight;
    output;
    date = intnx('month',date,0,'e');
    do while (date &amp;lt; intnx('month',nextdate,-1,'e'));
      weight = day(date);
      weighted = balance * weight;
      output;
      date = intnx('month',date,1,'e');
    end;
    date = intnx('month',nextdate,0,'b');
  end;
  weight = nextdate - date;
  weighted = balance * weight;
  output;
end;
else do; /* "fill up" the last month */
  weight = intnx('month',date,0,'e') - date + 1;
  weighted = balance * weight;
  output;
end;
drop nextcust nextdate nextbal;
run; 

proc sql;
create table want as
select
  cust_id,
  year(date) as year,
  month(date) as month,
  sum(weighted) / sum(weight) as avg_balance
from int
where calculated year = year(today()) and calculated month = 9
group by cust_id, calculated year, calculated month;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 04 Oct 2018 08:24:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501377#M133676</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-10-04T08:24:48Z</dc:date>
    </item>
    <item>
      <title>Re: need to find Monthly average balance from latest balance without intermediate data step creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501402#M133681</link>
      <description>&lt;P&gt;Maybe something like this?&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by cust_id;
  if not last.cust_id then do;
    _N_=_N_+1;
    set have(keep=date rename=(date=next_date)) point=_N_;
    days=next_date-max(date,'01sep2018'd);
    sum+days*balance;
    end;
  else do;
    days='01oct2018'd-max(date,'01sep2018'd);
    sum+days*balance;
    agv_balance=sum/30;
    output;
    sum=0;
    end;
  drop next_date days sum;
run;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Which can be generalized to any period using macro variables:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let start_date='01sep2018'd;
%let end_date='01oct2018'd; /* up to, but not including */
data want;
  set have;
  by cust_id;
  if not last.cust_id then do;
    _N_=_N_+1;
    set have(keep=date rename=(date=next_date)) point=_N_;
    days=next_date-max(date,&amp;amp;start_date);
    sum+days*balance;
    end;
  else do;
    days=&amp;amp;end_date-max(date,&amp;amp;start_date);
    sum+days*balance;
    agv_balance=sum/(&amp;amp;end_date-&amp;amp;start_date);
    output;
    sum=0;
    end;
  drop next_date days sum;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;But you may have a problem if your data has more dates than necessary (e.g. 2 dates before 01sep2018, or dates after september). Here is a way to solve that:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let start_date='01sep2018'd;
%let end_date='01oct2018'd; /* up to, but not including */
data want;
  set have;
  by cust_id;
  if not last.cust_id then do;
    _N_=_N_+1;
    set have(keep=date rename=(date=next_date)) point=_N_;
    if &amp;amp;start_date&amp;lt;=next_date&amp;lt;&amp;amp;end_date;
    days=next_date-max(date,&amp;amp;start_date);
    sum+days*balance;
    end;
  else do;
    if date&amp;lt;&amp;amp;end_date then do;
      days=&amp;amp;end_date-max(date,&amp;amp;start_date);
      sum+days*balance;
      end; 
    agv_balance=sum/(&amp;amp;end_date-&amp;amp;start_date);
    output;
    sum=0;
    end;
  drop next_date days sum;
run;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Oct 2018 09:45:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501402#M133681</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-10-04T09:45:08Z</dc:date>
    </item>
    <item>
      <title>Re: need to find Monthly average balance from latest balance without intermediate data step creation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501416#M133687</link>
      <description>Thank you so much for all the replies. It solves the problem.</description>
      <pubDate>Thu, 04 Oct 2018 10:45:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/need-to-find-Monthly-average-balance-from-latest-balance-without/m-p/501416#M133687</guid>
      <dc:creator>aranganayagi</dc:creator>
      <dc:date>2018-10-04T10:45:00Z</dc:date>
    </item>
  </channel>
</rss>

