BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
desireatem
Pyrite | Level 9

Please, I need help with this code;


proc iml;

     use Complete;

    read all var _all_ into DM;    

      close;

     pibflr =DM[,1];  monset= DM[,2]; censored=DM[,3]; frequency =DM[,4];

      use GIB;

    read all var _all_ into Col;   

monsetS=monset;

locC=loc(censored=1); matrix=J(1,5,2.5);

do im=1 to 141

do j= 1 to frequency[1];

seed=-1;

   A=RANUNI(-1);

     i=max(loc(Col[,j]-A>0));

if i<nrow(monset) then   /** do nothing if the last is censored, that is censored=1*****/

      do;

monsetS[locC] = monset[i-1]+ (monset[i+1]-monset[i-1])*((Col[i-1,j]-A)/(Col[i-1,j]-col[i+1,j]));

      end;

end;

sim=repeat(im,nrow(monset),1);

temp=pibflr||monset||censored||monsetS||sim;

Matrix=matrix//temp;

end; matrix=matrix[2:nrow(matrix),];

create impute_t var{ censored  pibflr monset monsetS sim};

      append from matrix;

quit;

ods trace on/listing;

NOTE: "C:\Users\foa577\Desktop\complete.csv" file was successfully created.

1502  proc iml;

NOTE: IML Ready

1503       use Complete;

1504      read all var _all_ into DM;

1505        close;

NOTE: Closing WORK.COMPLETE

1506       pibflr =DM[,1];

1506!                       monset= DM[,2];

1506! censored=DM[,3];

1506!                                                        frequency =DM[,4];

1507        use GIB;

1508      read all var _all_ into Col;

1509  monsetS=monset;

1510  locC=loc(censored=1);

1510!                       matrix=J(1,5,2.5);

1511  do im=1 to 141;

1512  do j= 1 to frequency[1];

1513   seed=-1;

1514     A=RANUNI(-1);

1515       i=max(loc(Col[,j]-A>0));

1516  if i<nrow(monset) then   /** do nothing if the last is censored, that is

1516! censored=1*****/

1517        do;

1518  monsetS[locC] = monset[i-1]+

1518! (monset[i+1]-monset[i-1])*((Col[i-1,j]-A)/(Col[i-1,j]-col[i+1,j]));

1519        end;

1520  end;

1521  sim=repeat(im,nrow(monset),1);

1522  temp=pibflr||monset||censored||monsetS||sim;

1523  Matrix=matrix//temp;

1524  end;

ERROR: (execution) Invalid subscript or subscript out of range.

operation : [ at line 1515 column 19

operands : Col, , j

Col    141 rows 125 cols    (numeric)

j      1 row       1 col (numeric)

       126

statement : ASSIGN at line 1515 column 6

1524!      matrix=matrix[2:nrow(matrix),];

ERROR: (execution) Invalid subscript or subscript out of range.

operation : [ at line 1524 column 19

operands : matrix, *LIT1023, _TEM1001,

matrix      1 row       5 cols (numeric)

       2.5 2.5       2.5       2.5 2.5

*LIT1023      1 row       1 col (numeric)

         2

_TEM1001      1 row       1 col (numeric)

         1

statement : ASSIGN at line 1524 column 6

1525  create impute_t var{ censored  pibflr monset monsetS sim};

1526        append from matrix;

1527  quit;

NOTE: Exiting IML.

NOTE: The data set WORK.IMPUTE_T has 1 observations and 5 variables.

NOTE: The SAS System stopped processing this step because of errors.

NOTE: PROCEDURE IML used (Total process time):

      real time           0.08 seconds

      cpu time            0.06 seconds

1528  ods trace on/listing;

1 ACCEPTED SOLUTION

Accepted Solutions
Rick_SAS
SAS Super FREQ

The error says that COL has 125 columns.  The value of j is 126. Thus the subscript Col[ ,j] is invalid.

View solution in original post

2 REPLIES 2
Rick_SAS
SAS Super FREQ

The error says that COL has 125 columns.  The value of j is 126. Thus the subscript Col[ ,j] is invalid.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 2 replies
  • 1889 views
  • 0 likes
  • 2 in conversation