<?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 Simple do loop problem in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153857#M1408</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm a new struggler with IML, and have a noobish question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I have here, or would have, is an inner function that for each "timevalue" x makes constant vector c=x, a running time vector t from moment x till the end of data t(x:m), deducts this t from constant x and multiplies with "price" vector p from moment x onwards (e=p[x:m]). Finally s(x) is sum of these rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Simple thing expained in complex way but simply but I would like to construct g(x)=SUM operator from x to m [(x-t(x))*p(x)]. Inner function is valid and for example x=3 creates:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;t&amp;nbsp; c&amp;nbsp; e&amp;nbsp; d&amp;nbsp; s&lt;/P&gt;&lt;P&gt;3 3 2 0 -104 &lt;/P&gt;&lt;P&gt;4 3 4 -4&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;5 3 7 -14&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;6 3 2 -6&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;7 3 4 -16&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;8 3 8 -40&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;9 3 4 -24&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;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But how can I insert x there one by one from 1 to m and get a result vector of s(x:m)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;p={5,6,2,4,7,2,4,8,4};&lt;/P&gt;&lt;P&gt;m=nrow(p);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Start uber(p,m);&lt;/P&gt;&lt;P&gt;w=0;&lt;/P&gt;&lt;P&gt;do i=1 to nrow(p);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=w+i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; q=(x:m);&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; /*m is sample size, a constant from outside of this loop*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t=q`;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*just transposing to get column vector into row vector*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c=j(nrow(t),1,x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*creates row vector of constant x*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e=p[x:m];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d=(c-t)#e;&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; /*distance times price*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; s=sum(d);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (s);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*given series of prices p, inserting x into this loop gives s(x)=cumulative sum of weight times price for (x:T), OR SHOULD DO SO*/&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 24 Jun 2014 11:03:31 GMT</pubDate>
    <dc:creator>LauriN</dc:creator>
    <dc:date>2014-06-24T11:03:31Z</dc:date>
    <item>
      <title>Simple do loop problem</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153857#M1408</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm a new struggler with IML, and have a noobish question.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I have here, or would have, is an inner function that for each "timevalue" x makes constant vector c=x, a running time vector t from moment x till the end of data t(x:m), deducts this t from constant x and multiplies with "price" vector p from moment x onwards (e=p[x:m]). Finally s(x) is sum of these rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Simple thing expained in complex way but simply but I would like to construct g(x)=SUM operator from x to m [(x-t(x))*p(x)]. Inner function is valid and for example x=3 creates:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;t&amp;nbsp; c&amp;nbsp; e&amp;nbsp; d&amp;nbsp; s&lt;/P&gt;&lt;P&gt;3 3 2 0 -104 &lt;/P&gt;&lt;P&gt;4 3 4 -4&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;5 3 7 -14&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;6 3 2 -6&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;7 3 4 -16&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;8 3 8 -40&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;9 3 4 -24&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;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But how can I insert x there one by one from 1 to m and get a result vector of s(x:m)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;p={5,6,2,4,7,2,4,8,4};&lt;/P&gt;&lt;P&gt;m=nrow(p);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Start uber(p,m);&lt;/P&gt;&lt;P&gt;w=0;&lt;/P&gt;&lt;P&gt;do i=1 to nrow(p);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=w+i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; q=(x:m);&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; /*m is sample size, a constant from outside of this loop*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t=q`;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*just transposing to get column vector into row vector*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c=j(nrow(t),1,x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*creates row vector of constant x*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e=p[x:m];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d=(c-t)#e;&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; /*distance times price*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; s=sum(d);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (s);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*given series of prices p, inserting x into this loop gives s(x)=cumulative sum of weight times price for (x:T), OR SHOULD DO SO*/&lt;/P&gt;&lt;P&gt;finish;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jun 2014 11:03:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153857#M1408</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-06-24T11:03:31Z</dc:date>
    </item>
    <item>
      <title>Re: Simple do loop problem</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153858#M1409</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm not 100% sure that I follow your example, but it sounds like you want ti compute the sum s for each value of x in the loop. To do that, just create s as a vector outside of the loop and assign to s&lt;I&gt; inside the loop:&lt;/I&gt;&lt;/P&gt;&lt;P&gt;s = j(m,1);&lt;/P&gt;&lt;P&gt;do i = 1 to nrow(p);&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; s&lt;I&gt; = sum(d);&lt;/I&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;return( s);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'll mention that you can accomplish the same computation with many fewer variables. You don't need x (which equals i) and you don't need w, q, e, or c.&amp;nbsp; Here's a simpler implementation:&lt;/P&gt;&lt;P&gt;s = j(m,1);&lt;/P&gt;&lt;P&gt;do i=1 to nrow(p);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t=T(i:m);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*m is sample size, a constant */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d=(i-t)#p&lt;T&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*distance times price*/&lt;/T&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; s&lt;I&gt;=sum(d);&lt;/I&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jun 2014 15:35:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153858#M1409</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2014-06-24T15:35:23Z</dc:date>
    </item>
    <item>
      <title>Re: Simple do loop problem</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153859#M1410</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That indeed does the trick, and also enlightens how to use a loop, thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Jun 2014 08:51:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Simple-do-loop-problem/m-p/153859#M1410</guid>
      <dc:creator>LauriN</dc:creator>
      <dc:date>2014-06-25T08:51:43Z</dc:date>
    </item>
  </channel>
</rss>

