<?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: how to use Lag function? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79561#M22912</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can't use the lag function with proc sql.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 24 Nov 2012 23:25:08 GMT</pubDate>
    <dc:creator>art297</dc:creator>
    <dc:date>2012-11-24T23:25:08Z</dc:date>
    <item>
      <title>how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79560#M22911</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hallo, I would like to do some calculation using the lag(1) value. I have something like this, but lag function did not work here&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Create table want as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select date, id, sum(value1) as value1, &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(value2*weight)/sum(weight) as value2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum&lt;STRONG&gt;(lag1(weight)&lt;/STRONG&gt;*return)/sum&lt;STRONG&gt;(lag1(weight))&lt;/STRONG&gt; as return&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have group by id, date;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;quit; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can I make this work? Thank you&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Nov 2012 23:22:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79560#M22911</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-24T23:22:40Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79561#M22912</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can't use the lag function with proc sql.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Nov 2012 23:25:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79561#M22912</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-24T23:25:08Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79562#M22913</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The lag function is not available in proc SQL. Proc SQL performs operations on unordered sets of data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By LAG1 did you mean the previous observation or the previous date?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Nov 2012 23:30:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79562#M22913</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-11-24T23:30:04Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79563#M22914</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;yes, by lag I mean the previous date (t-1). &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 Nov 2012 23:37:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79563#M22914</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-24T23:37:36Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79564#M22915</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you want to match the value with the return on the previous day then try this (untested) :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;Proc sql;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt; Create table want as&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt; select t.id, t.date, t.value1, t.value2, r.return&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt; from&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Select id, date, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(value1) as value1, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(weight*value2)/sum(weight) as value2&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have group by id, date) as t&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt; left join&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; (Select id, date, &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(weight*return)/sum(weight) as return&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have group by id, date) as r&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt; on t.id=r.id and t.date=intnx('DAY',r.date,1);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12pt; font-family: calibri, verdana, arial, sans-serif;"&gt;quit;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This assumes that date is a SAS date. If date is a datetime variable then replace 'DAY' by 'DTDAY'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 00:51:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79564#M22915</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2012-11-25T00:51:13Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79565#M22916</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;the left join - part did not work well. because the weight and return are all from previous day. The data I have are monthly data I should say previous obs above I think.&lt;/P&gt;&lt;P&gt;The return is this month return and the weight is last month weight of different assets &lt;/P&gt;&lt;P&gt;return&lt;STRONG&gt; (t)&lt;/STRONG&gt; = sum(weight&lt;STRONG&gt; (t-1)&lt;/STRONG&gt;*return&lt;STRONG&gt;(t)&lt;/STRONG&gt;)/sum(weight&lt;STRONG&gt;(t-1))&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 13:35:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79565#M22916</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-25T13:35:00Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79566#M22917</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Post some sample data and the result you want from that data.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 14:46:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79566#M22917</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-25T14:46:13Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79567#M22918</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The data look like this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date&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; value&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; return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; portfolio&lt;/P&gt;&lt;P&gt;&lt;IMG alt="" class="jiveImage" src="https://communities.sas.com/legacyfs/online/2748_pastedImage_0.png" style="width: 284px; height: 244px;" /&gt;&lt;IMG alt="" class="jiveImage" src="https://communities.sas.com/legacyfs/online/2749_pastedImage_1.png" style="width: 88px; height: 245px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to group them into the portfolio level so the monthly return of the portfolio would be the weighted return of the individual asset. &lt;/P&gt;&lt;P&gt;The result table would be:&lt;/P&gt;&lt;P&gt;portfolio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date&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; value&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;&amp;nbsp; return&lt;/P&gt;&lt;P&gt;200075&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01/31/1997&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 138.449&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;&amp;nbsp; .&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;200075 &lt;/TD&gt;&lt;TD&gt;&amp;nbsp; 02/28/1997 &lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; 138.249 &lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0.149*0.005199 + 138.3*0.006061)/(138.3+0.149).&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 15:21:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79567#M22918</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-25T15:21:38Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79568#M22919</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And&lt;/P&gt;&lt;P&gt;1. where does the 'weight' variable come from?&lt;/P&gt;&lt;P&gt;2. is the one value for return, R, a missing value?&lt;/P&gt;&lt;P&gt;3. will those always be the two ids?&lt;/P&gt;&lt;P&gt;4. will there always be two and only two ids?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 15:54:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79568#M22919</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-25T15:54:55Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79569#M22920</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1. the weight is the value column&lt;/P&gt;&lt;P&gt;2. the R is the missing return, missing value.&lt;/P&gt;&lt;P&gt;3. No there are more different ids (about 15000 of them) &lt;/P&gt;&lt;P&gt;4. and the number of ids varies per portfolio. there are about 2500 different portfolios&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 16:07:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79569#M22920</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-25T16:07:09Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79570#M22921</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Then I'm confused.&amp;nbsp; Your formula indicates variables value1, value2, weight and return.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From your example, value1 and value2 are the two records for a given date.&amp;nbsp; The formula takes the sum of those, divided by another variable labeled weight.&amp;nbsp; I don't understand the difference between value and weight.&amp;nbsp; Similarly, each value has a separate return.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please reshow your example using the variable names from the file, namely: id, date, value, return and portfolio &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 16:40:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79570#M22921</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-25T16:40:16Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79571#M22922</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You refers to the first post?&lt;/P&gt;&lt;P&gt;it would be this:&lt;/P&gt;&lt;P&gt;Proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Create table want as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select date, portfolio, sum(value) as value, &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum&lt;STRONG&gt;(lag1(value)&lt;/STRONG&gt;*return)/sum&lt;STRONG&gt;(lag1(value))&lt;/STRONG&gt; as return&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have group by portfolio, date;&lt;/P&gt;&lt;P&gt;quit; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;return&lt;STRONG&gt; (t)&lt;/STRONG&gt; = sum(value&lt;STRONG&gt;(t-1)&lt;/STRONG&gt;*return&lt;STRONG&gt;(t)&lt;/STRONG&gt;)/sum(value&lt;STRONG&gt;(t-1))&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt; so if I don't take the lag grouping those individual assets into portfolio works fine. But only for the return I have to take the lag ( previous month) value&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 17:09:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79571#M22922</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-25T17:09:09Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79572#M22923</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Still not sure I correctly understand what you want, but the following appears to match what you want.&amp;nbsp; Someone more proficient than me with proc sql can consolidate the code if it is in the right direction:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; informat date mmddyy10.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; format date date9.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input id date value return portfolio;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;029946 1/31/1997 0.149 . 200075&lt;/P&gt;&lt;P&gt;029947 1/31/1997 138.300 0.010499 200075&lt;/P&gt;&lt;P&gt;029946 2/28/1997 0.276 0.005199 200075&lt;/P&gt;&lt;P&gt;029947 2/28/1997 137.973 0.006061 200075&lt;/P&gt;&lt;P&gt;029946 3/31/1997 0.376 -0.029741 200075&lt;/P&gt;&lt;P&gt;029947 3/31/1997 132.154 -0.030120 200075&lt;/P&gt;&lt;P&gt;029946 4/30/1997 0.481 0.012467 200075&lt;/P&gt;&lt;P&gt;029947 4/30/1997 133.955 0.014311 200075&lt;/P&gt;&lt;P&gt;029946 5/30/1997 0.595 0.054529 200075&lt;/P&gt;&lt;P&gt;029947 5/30/1997 141.063 0.054674 200075&lt;/P&gt;&lt;P&gt;029946 6/30/1997 0.693 0.030025 200075&lt;/P&gt;&lt;P&gt;029947 6/30/1997 143.641 0.030518 200075&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table need as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select l.portfolio,l.id, l.date, l.return as lreturn,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.value as lvalue, r.return as rreturn,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r.value as rvalue&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select portfolio,id, date,return,value&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from have ) as l&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; left join&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select portfolio,id, date, value,return&lt;/P&gt;&lt;P&gt;&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; from have) as r&lt;/P&gt;&lt;P&gt;&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; on l.portfolio=r.portfolio and&lt;/P&gt;&lt;P&gt;&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; l.id=r.id and&lt;/P&gt;&lt;P&gt;&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; intnx('month',r.date,1,'b')&amp;lt;=l.date&amp;lt;=&lt;/P&gt;&lt;P&gt;&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; intnx('month',r.date,1,'e')&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by portfolio,date,id&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table want as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select portfolio, date, &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(rvalue*lreturn)/sum(rvalue) as return&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from need&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by portfolio,date&lt;/P&gt;&lt;P&gt;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 17:42:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79572#M22923</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-25T17:42:51Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79573#M22924</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To make the calculation you want you need to get the basis value (what you were calling weight) onto the record with the return value. SQL is not a good tool for this since it does not natively support the concept of ordered records.&amp;nbsp; Assuming that the ID variable identifies particular asset you need to process you data sorted by PORTFOLIO ID DATE to be able to take the previous value of the asset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data returns ;&lt;/P&gt;&lt;P&gt; set have;&lt;/P&gt;&lt;P&gt; by portfolio id date ;&lt;/P&gt;&lt;P&gt; basis = lag(value);&lt;/P&gt;&lt;P&gt; if first.id then basis = .; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now you can do calculations using variables that are on the same observation.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 17:54:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79573#M22924</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2012-11-25T17:54:38Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79574#M22925</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="2431" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt; With the example data your code results in the same values as the first of the two proc sql runs I suggested.&amp;nbsp; Specifically, my lreturn=your return, my rvalue=your basis, and my lvalue= your value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I agree with you that SQL shouldn't be used if one needs to know the order of one's data but, in this case, I don't think order wasn't necessary .. only the values of date, id and porfolio.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 21:42:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79574#M22925</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2012-11-25T21:42:50Z</dc:date>
    </item>
    <item>
      <title>Re: how to use Lag function?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79575#M22926</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much, I have this one working now&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Nov 2012 23:31:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-use-Lag-function/m-p/79575#M22926</guid>
      <dc:creator>thdang</dc:creator>
      <dc:date>2012-11-25T23:31:42Z</dc:date>
    </item>
  </channel>
</rss>

