Having a matrix X with say 100 rows and 10 columns I want to subset the matrix X2 by selecting rows 1 to 5 and rows 20 to 30.
PROC IML;
X=J(100,10,.);
CALL RANUNI(12345,X);
X2=X[1:5,]; /*WORKS*/
X2=X[{1:5 20:30},]; /*DOES NOT WORKS*/
you need to concatenate the two ranges together using '||'
X2=X[(1:5)||(20:30),];
you need to concatenate the two ranges together using '||'
X2=X[(1:5)||(20:30),];
Thanks @IanWakeling. I was behind the || operator but I haven't used it correctly in terms of the brackets.
For more on extracting submatrices, see "Extracting elements from a matrix: rows, columns, submatrices, and indices"
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
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.