NOTE: Line generated by the invoked macro "SURV".
26 (InverseC^=0))]; print t; tt=t(t); *print tt;
26 ! Big[(k-1)*10+(1:10),1:(sum(censored=1)+1)]=survival1*t(t); end; create GIB_&p from
26 ! BIG[colname={COL1}]; append from BIG; quit; ; end; *print InverseC;
---
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
proc iml;
use man;
read all var{ Replicate time censored obs y Frequency SURVIVAL1 SurvivalM InverseC } into DM;
close; /*close the link between the dataset and IML*/
InverseC=DM[,9];SurvivalM=DM[,8];survival1=DM[,7]; frequency=DM[,6]; y=DM[,5];obs =DM[,4]; censored=DM[,3]; time= DM[,2]; replicate = DM[,1]; /*Survivalival is second column*/ /*time is first column*/
n = nrow(byGroup);
u = unique(Replicate);
BIG=J(20,10,-1) ;
InverseC=J(nrow(survival1),1,1);
survival1= J(nrow(survival1),1,1);
t=J(nrow(survival1),1,1);
do k = 1 to nrow(byGroup);
byGroup = DM[loc(replicate=u
InverseC=byGroup[,9];SurvivalM=byGroup[,8]; survival1=byGroup[,7];frequency=byGroup[,6];y=byGroup[,10];obs =byGroup[,4]; censored =byGroup[,3]; time= byGroup[,2]; replicate= byGroup[,1];
t=InverseC[(loc(InverseC^=0))]; print t;
tt=t(t); print tt;
Big[(k-1)*10+(1:10),1:(sum(censored=1)+1)]=survival1*(tt);
end;
create GIB_1 from BIG[colname={COL1}];
append from BIG;
quit;
Looks like end of comment without a starting /*
I start with a do...
end;
see below;
do k = 1 to nrow(byGroup);
byGroup = DM[loc(replicate=u
InverseC=byGroup[,9];SurvivalM=byGroup[,8]; survival1=byGroup[,7];frequency=byGroup[,6];y=byGroup[,10];obs =byGroup[,4]; censored =byGroup[,3]; time= byGroup[,2]; replicate= byGroup[,1];
t=InverseC[(loc(InverseC^=0))]; print t;
tt=t(t); print tt;
Big[(k-1)*10+(1:10),1:(sum(censored=1)+1)]=survival1*(tt);
end;
The log shows append and quit, which I don't see in your code, so that's strange.
Can you post the whole log/code.
This is within a simulation, I run it for just one iteration, that is &p=1. The code has append and quit. Your help is highly need Sir
Here is the log file:
data KMM_&p;
570 set testt_&p;
571 set KM_&p;
572 if censored=1 then SurvivalM=Survival1; else SurvivalM=Survival1;
573 if censored=1 then InverseC=1/survival1; else InverseC=0;
574 keep time censored y frequency survival1 obs replicate SurvivalM InverseC;
575 run;
576
577
578 proc iml;
579 use KMM_&p;
580 read all var{ Replicate time censored obs y Frequency SURVIVAL1 SurvivalM InverseC } into
580! DM;
581 close;
581! /*close the link between the dataset and IML*/
582 InverseC=DM[,9];SurvivalM=DM[,8];survival1=DM[,7]; frequency=DM[,6]; y=DM[,5];obs
582! =DM[,4]; censored=DM[,3]; time= DM[,2]; replicate = DM[,1]; /*Survivalival is second
582! column*/ /*time is first column*/
583
584 n = nrow(byGroup);
585 u = unique(Replicate);
586 BIG=J(20,10,-1) ;
587 InverseC=J(nrow(survival1),1,1);
588 survival1= J(nrow(survival1),1,1);
589 t=J(nrow(survival1),1,1);
590 do k = 1 to nrow(byGroup);
591 byGroup = DM[loc(replicate=u
592 *byIdx = loc(Replicate=u
593 *byGroup = DM[byIdx,]; /* extract BY group */ /* extract BY group
593! */
594 InverseC=byGroup[,9];SurvivalM=byGroup[,8]; survival1=byGroup[,7];
594! frequency=byGroup[,6];y=byGroup[,10];obs =byGroup[,4]; censored =byGroup[,3]; time=
594! byGroup[,2]; replicate= byGroup[,1];
595 t=InverseC[(loc(InverseC^=0))]; print t;
596 tt=t(t); *print tt;
597 Big[(k-1)*10+(1:10),1:(sum(censored=1)+1)]=survival1*t(t);
598 end;
599
600
601 create GIB_&p from BIG[colname={COL1}];
602 append from BIG;
603 quit;
604
605
606
OTE: There were 20 observations read from the data set WORK.TESTT_1.
NOTE: There were 20 observations read from the data set WORK.KM_1.
NOTE: The data set WORK.KMM_1 has 20 observations and 9 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
NOTE: IML Ready
NOTE: Closing WORK.KMM_1
NOTE: Exiting IML.
NOTE: The data set WORK.GIB_1 has 20 observations and 10 variables.
NOTE: PROCEDURE IML used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
NOTE: Line generated by the invoked macro "SURV".
26 (InverseC^=0))]; print t; tt=t(t); *print tt;
26 ! Big[(k-1)*10+(1:10),1:(sum(censored=1)+1)]=survival1*t(t); end; create GIB_&p from
26 ! BIG[colname={COL1}]; append from BIG; quit; ; end; *print InverseC;
---
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!