<?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: Use a vector as an input in a macro in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487336#M287267</link>
    <description>&lt;P&gt;I am not really into vectors, can this help?&lt;/P&gt;
&lt;P&gt;&lt;A href="https://stackoverflow.com/questions/15511853/sas-proc-iml-length-of-a-vector" target="_blank"&gt;https://stackoverflow.com/questions/15511853/sas-proc-iml-length-of-a-vector&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;//Fredrik&lt;/P&gt;</description>
    <pubDate>Thu, 16 Aug 2018 10:23:06 GMT</pubDate>
    <dc:creator>FredrikE</dc:creator>
    <dc:date>2018-08-16T10:23:06Z</dc:date>
    <item>
      <title>Use a vector as an input in a macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487325#M287264</link>
      <description>&lt;P&gt;Hello, I'd like to know how to use a vector as an input in a macro ?&lt;BR /&gt;My specific case is: I want the user to input a vector of events k={...} and a vector of total number of trials n={...}.&lt;BR /&gt;Then I'd like to use probbnml(p,n,k) function with each values of the vectors (like k(1) with n(1), k(2) with n(2) and so on...) Over a range of values for p (from 0.1 to 0.9 by 0.01 ).&lt;/P&gt;&lt;P&gt;I created a code to do it in SAS (9.4) but I'd like to convert it to a macro and I can't do it. Any help is welcome, thanks !&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code I got:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;proc iml;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;p = t((0:99)/100);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;n = {9,9,5};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;k = {1,2,1};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;z = j(300,3);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;do i= 1 to 100;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;do j=1 to 3;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;a = (j-1)*100+i;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;z[a,1] = p[i];&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;z[a,2] = probbnml(p[i],n[j],k[j]);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;z[a,3] = j;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;end;&lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;create data from z;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;append from z;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;close data;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;quit;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;proc sgplot data=data;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-weight: 400;"&gt;series x=col1 y =col2 / group= col3;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-weight: 400;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Aug 2018 09:37:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487325#M287264</guid>
      <dc:creator>r0720959</dc:creator>
      <dc:date>2018-08-16T09:37:13Z</dc:date>
    </item>
    <item>
      <title>Re: Use a vector as an input in a macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487330#M287265</link>
      <description>&lt;P&gt;Like this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro test(_n=, _k=);
proc iml;
p = t((0:99)/100);
n = &amp;amp;_n;
k = &amp;amp;_k;
z = j(300,3);
do i= 1 to 100;
        do j=1 to 3;
            a = (j-1)*100+i;
            z[a,1] = p[i];
            z[a,2] = probbnml(p[i],n[j],k[j]);
            z[a,3] = j;
        end;
    end;   
 
create data from z;
append from z;
close data;
quit;
 
proc sgplot data=data;
    series x=col1 y =col2 / group= col3;
run;
%mend;

%test(_n=%str({9,9,5}), _k=%str({1,2,1}));
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;//Fredrik&lt;/P&gt;</description>
      <pubDate>Thu, 16 Aug 2018 10:11:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487330#M287265</guid>
      <dc:creator>FredrikE</dc:creator>
      <dc:date>2018-08-16T10:11:18Z</dc:date>
    </item>
    <item>
      <title>Re: Use a vector as an input in a macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487334#M287266</link>
      <description>&lt;P&gt;Yes almost !&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I would just like for the second do loop to go from j=1 to j=length of the n vector.&lt;/P&gt;&lt;P&gt;And the z matrix to be of size (100*length of vector n,3).&lt;/P&gt;&lt;P&gt;Then it would be perfect&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Aug 2018 10:18:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487334#M287266</guid>
      <dc:creator>r0720959</dc:creator>
      <dc:date>2018-08-16T10:18:22Z</dc:date>
    </item>
    <item>
      <title>Re: Use a vector as an input in a macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487336#M287267</link>
      <description>&lt;P&gt;I am not really into vectors, can this help?&lt;/P&gt;
&lt;P&gt;&lt;A href="https://stackoverflow.com/questions/15511853/sas-proc-iml-length-of-a-vector" target="_blank"&gt;https://stackoverflow.com/questions/15511853/sas-proc-iml-length-of-a-vector&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;//Fredrik&lt;/P&gt;</description>
      <pubDate>Thu, 16 Aug 2018 10:23:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487336#M287267</guid>
      <dc:creator>FredrikE</dc:creator>
      <dc:date>2018-08-16T10:23:06Z</dc:date>
    </item>
    <item>
      <title>Re: Use a vector as an input in a macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487366#M287268</link>
      <description>&lt;P&gt;I think FredrikE&amp;nbsp;answered your macro question,&amp;nbsp;but&amp;nbsp;think your IML code will be more efficient if you eliminate the loop over i:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;i = t(1:nrow(p));
do j=1 to nrow(n);
   a = (j-1)*100+i;
   z[a,1] = p;
   z[a,2] = probbnml(p,n[j],k[j]);
   z[a,3] = j;
end;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 16 Aug 2018 12:11:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487366#M287268</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2018-08-16T12:11:40Z</dc:date>
    </item>
    <item>
      <title>Re: Use a vector as an input in a macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487377#M287269</link>
      <description>Thanks a lot, it is just what I needed to complete my code ! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
      <pubDate>Thu, 16 Aug 2018 12:25:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Use-a-vector-as-an-input-in-a-macro/m-p/487377#M287269</guid>
      <dc:creator>r0720959</dc:creator>
      <dc:date>2018-08-16T12:25:06Z</dc:date>
    </item>
  </channel>
</rss>

