<?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: Hoy do I use aby or class statement in proc iml? in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131079#M1030</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is no BY statement or CLASS statement for PROC IML&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You have to write a loop in IML code, and then loop over all possible values of the BY variable. All possible values of the BY variable can be determined by using the IML function UNIQUE or UNIQUEBY&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 01 Nov 2013 14:04:22 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2013-11-01T14:04:22Z</dc:date>
    <item>
      <title>How do I use a by or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131078#M1029</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,I wish to perform this procedure by replicate. I have a by replicate but it gave me the error message below. Any help?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use Complete_&amp;amp;p;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; read all var _all_ into DM;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; frequency =DM[,7]; y =DM[,6]; obs=DM[,5]; Censored= DM[,4]; time = DM[,3];&amp;nbsp; x =DM[,2];replicate=DM[,1];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use GIB_&amp;amp;p;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; read all var _all_ into Col; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;by replicate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;timeS=time;&lt;/P&gt;&lt;P&gt;locC=loc(censored=1); matrix=J(1,8,2.5);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do im=1 to 1; &lt;/P&gt;&lt;P&gt;do j= 1 to frequency[1];&lt;/P&gt;&lt;P&gt;seed=-1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; A=RANUNI(-1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=max(loc(Col[,j]-A&amp;gt;0));&lt;/P&gt;&lt;P&gt;if i&amp;lt;nrow(time) then&amp;nbsp;&amp;nbsp; /** do nothing if the last is censored, that is&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; censored=1*****/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/P&gt;&lt;P&gt;timeS[locC&lt;J&gt;] = time&lt;I&gt;+ (time[i+1]-time&lt;I&gt;)*((Col[i,j]-A)/(Col[i,j]+col[i+1,j]));&lt;/I&gt;&lt;/I&gt;&lt;/J&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;sim=repeat(im,nrow(time),1);&lt;/P&gt;&lt;P&gt;temp=obs||censored||time||Y||timeS||X||sim||replicate;&lt;/P&gt;&lt;P&gt;Matrix=matrix//temp;&lt;/P&gt;&lt;P&gt;end; matrix=matrix[2:nrow(matrix),];&lt;/P&gt;&lt;P&gt;create impute_t_&amp;amp;p var{obs censored time Y timeS&amp;nbsp; X sim replicate};&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; append from matrix;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;ods trace on/listing;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: IML Ready&lt;/P&gt;&lt;P&gt;NOTE: Closing WORK.COMPLETE_1&lt;/P&gt;&lt;P&gt;NOTE: Line generated by the invoked macro "SURV".&lt;/P&gt;&lt;P&gt;30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by replicate;&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; --&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; 180&lt;/P&gt;&lt;P&gt;ERROR 180-322: Statement is not valid or it is used out of proper order.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: Exiting IML.&lt;/P&gt;&lt;P&gt;NOTE: The data set WORK.IMPUTE_T_1 has 500 observations and 8 variables.&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;&lt;P&gt;NOTE: PROCEDURE IML used (Total process time):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.98 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.04 seconds&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Nov 2013 13:58:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131078#M1029</guid>
      <dc:creator>desireatem</dc:creator>
      <dc:date>2013-11-01T13:58:02Z</dc:date>
    </item>
    <item>
      <title>Re: Hoy do I use aby or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131079#M1030</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is no BY statement or CLASS statement for PROC IML&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You have to write a loop in IML code, and then loop over all possible values of the BY variable. All possible values of the BY variable can be determined by using the IML function UNIQUE or UNIQUEBY&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Nov 2013 14:04:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131079#M1030</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2013-11-01T14:04:22Z</dc:date>
    </item>
    <item>
      <title>Re: Hoy do I use aby or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131080#M1031</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think the following blog posts might help:&amp;nbsp; &lt;A href="http://blogs.sas.com/content/iml/2011/11/07/an-efficient-alternative-to-the-unique-loc-technique/" title="http://blogs.sas.com/content/iml/2011/11/07/an-efficient-alternative-to-the-unique-loc-technique/"&gt; An efficient alternative to the UNIQUE-LOC technique - The DO Loop&lt;/A&gt; or &lt;A href="http://blogs.sas.com/content/iml/2011/11/01/the-unique-loc-trick-a-real-treat/" title="http://blogs.sas.com/content/iml/2011/11/01/the-unique-loc-trick-a-real-treat/"&gt; The UNIQUE-LOC trick: A real treat! - The DO Loop&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Nov 2013 14:09:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131080#M1031</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2013-11-01T14:09:52Z</dc:date>
    </item>
    <item>
      <title>Re: Hoy do I use aby or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131081#M1032</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I used the blog,this is my code,runs in my simulations but I do not know if it is doing the right. I just want it to run like a by statement;&amp;nbsp; I bold it. Does what is withing the bold do statement works by a by statement?&amp;nbsp; I do not think correct because the matrix GIB is supposed to be of varying dimension but that snot what I got or may be the way I created my matrix is wrong.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;use KMM_&amp;amp;p;&lt;/P&gt;&lt;P&gt;read all var{time censored&amp;nbsp; survival1 frequency y replicate } into DM;&lt;/P&gt;&lt;P&gt;/*read the 3 variables into matrix*/ /*have to print within DM*/&lt;/P&gt;&lt;P&gt;close;&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;&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;&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;&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; /*close the link between the dataset and IML*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; replicate=DM[,6]; y=DM[,5];frequency =DM[,4]; survival1 =DM[,3]; Censored= DM[,2]; time = DM[,1];&amp;nbsp;&amp;nbsp; /*Survivalival is second column*/&amp;nbsp; /*time is first column*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;n = nrow(DM);&lt;/P&gt;&lt;P&gt;/*number of rows in the dataset = obs*/ /*THE N DOESNT NEED TO BE FIXED*/&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;&amp;nbsp;&amp;nbsp; /*Segment equals the number of consecutive patterns*/ /*J creates a matrix in IML , it creates a 20x1 matrix of 1s, the 3rd 1 is the value in matrix*/&lt;/P&gt;&lt;P&gt;segment = J(nrow(DM),1,1); *print segment;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;u = unique(replicate);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;s = j(1, ncol(u));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;do i=1&amp;nbsp; to ncol(u);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;do i = 2 to nrow(DM);&lt;/P&gt;&lt;P&gt;if ((Censored&lt;I&gt;=1)=(Censored[i-1]=1)) then segment&lt;I&gt;=segment[i-1];&amp;nbsp; /**/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* coming up with unique segments for censored*****/;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;else if ((Censored&lt;I&gt;=1)=1-(Censored[i-1]=1)) then segment&lt;I&gt;=segment[i-1]+1;&lt;/I&gt;&lt;/I&gt;&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;&amp;nbsp;&amp;nbsp; *print time survival1 censored frequency segment;&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;&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;*print segment;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SurvivalM=J(nrow(survival1),1,1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if censored&lt;I&gt;=1 then SurvivalM&lt;I&gt;=survival1&lt;I&gt;; else if censored&lt;I&gt;=0 then SurvivalM&lt;I&gt;=survival1&lt;I&gt;;&amp;nbsp; /*****Create a 1 by N -matrix of Survival ****/;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&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; &lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *print SurvivalM;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InverseC=J(nrow(survival1),1,1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do i = 1 to n;&lt;/P&gt;&lt;P&gt;if censored&lt;I&gt;=1 then InverseC&lt;I&gt;=1/survival1&lt;I&gt;; else if censored&lt;I&gt;=0 then InverseC&lt;I&gt;=0;&amp;nbsp; /*****survivalC&lt;I&gt; is the imputed censored survival and set the real Survivalval to 1**/;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;*print InverseC;&lt;/P&gt;&lt;P&gt;m=frequency[1]; m=1*m; print m;&amp;nbsp; %let mm=m;&lt;/P&gt;&lt;P&gt;t=InverseC[(loc(InverseC^=0))]; print t;&lt;/P&gt;&lt;P&gt;tt=t(t); print tt;&lt;/P&gt;&lt;P&gt;Big=SurvivalM*(tt);&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;create GIB_&amp;amp;p from BIG[colname={COL1}];&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;append from BIG;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Nov 2013 21:09:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131081#M1032</guid>
      <dc:creator>desireatem</dc:creator>
      <dc:date>2013-11-01T21:09:24Z</dc:date>
    </item>
    <item>
      <title>Re: Hoy do I use aby or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131082#M1033</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since you marked this question "Answered," I almost didn't look at your program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your program does not look to be correct. I recommend that you re-study the code from the blogs so that you understand why the statements give the functionality of BY groups. There are several problems with your program.&lt;/P&gt;&lt;P&gt;1) You can't use 'i' for nested loops. Change the index variable of the outer loop that currently reads DO i=1 to ncol(u)&lt;/P&gt;&lt;P&gt;2) I don't see any LOC statements that extract the relevant rows of the data. You need to extract the observations for each BY group like this&lt;/P&gt;&lt;P&gt;do k = 1 to ncol(u);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byIdx = loc(replicate=u&lt;K&gt;); /* the UNIQUE-LOC trick */&lt;/K&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; byGroup = DM[idx,];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* extract BY group */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; y=byGroup[,5];freqency =byGroup[,4]; survival1 =byGroup[,3];etc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* do analysis for these rows */&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 02 Nov 2013 10:41:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131082#M1033</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2013-11-02T10:41:28Z</dc:date>
    </item>
    <item>
      <title>Re: Hoy do I use aby or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131083#M1034</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;By the way, you don't appear to be using the &amp;amp;mm macro variable, but you should be aware that your %LET statement isn't doing what you think it is doing. The value of &amp;amp;mm is always the character 'm'. For an explanation, see &lt;A href="http://blogs.sas.com/content/iml/2013/06/19/macros-and-loops/" title="http://blogs.sas.com/content/iml/2013/06/19/macros-and-loops/"&gt; Macros and loops in the SAS/IML language - The DO Loop&lt;/A&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 02 Nov 2013 11:08:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131083#M1034</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2013-11-02T11:08:42Z</dc:date>
    </item>
    <item>
      <title>Re: Hoy do I use aby or class statement in proc iml?</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131084#M1035</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Rick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have modified my code as you said. This is the code, but it does not creat GIB. I do not know the dimension so I do not know how to set a default matrix;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;use KMM_&amp;amp;p;&lt;/P&gt;&lt;P&gt;read all var{time censored&amp;nbsp; survival1 frequency y replicate } into DM; &lt;/P&gt;&lt;P&gt;/*read the 3 variables into matrix*/ /*have to print within DM*/&lt;/P&gt;&lt;P&gt;close;&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;&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;&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;&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; /*close the link between the dataset and IML*/&lt;/P&gt;&lt;P&gt;&amp;nbsp; replicate=DM[,6]; y=DM[,5];frequency =DM[,4]; survival1 =DM[,3]; Censored= DM[,2]; time = DM[,1];&amp;nbsp;&amp;nbsp; /*Survivalival is second column*/&amp;nbsp; /*time is first column*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;n = nrow(DM); &lt;/P&gt;&lt;P&gt;/*number of rows in the dataset = obs*/ /*THE N DOESNT NEED TO BE FIXED*/&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;&amp;nbsp;&amp;nbsp; /*Segment equals the number of consecutive patterns*/ /*J creates a matrix in IML , it creates a 100x1 matrix of 1s, the 3rd 1 is the value in matrix*/&lt;/P&gt;&lt;P&gt;segment = J(nrow(DM),1,1); *print segment; &lt;/P&gt;&lt;P&gt;do k = 1 to ncol(u);&lt;/P&gt;&lt;P&gt;byIdx = loc(replicate=u&lt;K&gt;); /* the UNIQUE-LOC trick */&lt;/K&gt;&lt;/P&gt;&lt;P&gt;byGroup = DM[idx,];&lt;/P&gt;&lt;P&gt; y=byGroup[,5];freqency =byGroup[,4]; survival1 =byGroup[,3]; Censored= byGroupDM[,2]; time = timeDM[,1];&lt;/P&gt;&lt;P&gt;do i = 2 to nrow(DM);&lt;/P&gt;&lt;P&gt;if ((Censored&lt;I&gt;=1)=(Censored[i-1]=1)) then segment&lt;I&gt;=segment[i-1];&amp;nbsp; /**/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* coming up with unique segments for censored*****/;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt; else if ((Censored&lt;I&gt;=1)=1-(Censored[i-1]=1)) then segment&lt;I&gt;=segment[i-1]+1;&lt;/I&gt;&lt;/I&gt;&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;&amp;nbsp;&amp;nbsp; *print time survival1 censored frequency segment;&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;&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;*print segment;&lt;/P&gt;&lt;P&gt;end; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SurvivalM=J(nrow(survival1),1,1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if censored&lt;I&gt;=1 then SurvivalM&lt;I&gt;=survival1&lt;I&gt;; else if censored&lt;I&gt;=0 then SurvivalM&lt;I&gt;=survival1&lt;I&gt;;&amp;nbsp; /*****Create a 1 by N -matrix of Survival ****/;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&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; &lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *print SurvivalM;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InverseC=J(nrow(survival1),1,1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do i = 1 to n;&lt;/P&gt;&lt;P&gt;if censored&lt;I&gt;=1 then InverseC&lt;I&gt;=1/survival1&lt;I&gt;; else if censored&lt;I&gt;=0 then InverseC&lt;I&gt;=0;&amp;nbsp; /*****survivalC&lt;I&gt; is the imputed censored survival and set the real Survivalval to 1**/;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;do i = 1 to ncol(frequency);&lt;/P&gt;&lt;P&gt;call symputx("j", i);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; m = num(symget("j"));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; m=1*m; print m;&amp;nbsp; %let mm=m;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;t=InverseC[(loc(InverseC^=0))]; print t;&lt;/P&gt;&lt;P&gt;tt=t(t); print tt;&lt;/P&gt;&lt;P&gt;Big=SurvivalM*(tt);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;create GIB_&amp;amp;p from BIG[colname={COL1}];&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;&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;append from BIG;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOCK FILE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: IML Ready&lt;/P&gt;&lt;P&gt;NOTE: Closing WORK.KMM_1&lt;/P&gt;&lt;P&gt;ERROR: Matrix Big has not been set to a value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; statement : CREATE at line 913 column 93&lt;/P&gt;&lt;P&gt;ERROR: No data set is currently open for output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; statement : APPEND at line 913 column 133&lt;/P&gt;&lt;P&gt;NOTE: Exiting IML.&lt;/P&gt;&lt;P&gt;NOTE: The SAS System stopped processing this step because of errors.&lt;/P&gt;&lt;P&gt;NOTE: PROCEDURE IML used (Total process time):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 02 Nov 2013 14:04:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/How-do-I-use-a-by-or-class-statement-in-proc-iml/m-p/131084#M1035</guid>
      <dc:creator>desireatem</dc:creator>
      <dc:date>2013-11-02T14:04:11Z</dc:date>
    </item>
  </channel>
</rss>

