Thanks Ksharp, If you explicitly define the row and column names as character vectors, then as your code shows below, this is somewhat trivial. I have a very large matrix with thousands of columns, and am pulling the variable names using varnames=contents(). Explicity defining them as character vectors would be impractical. I created some code that I think does what I need it to (below). I guess my only question is, can I always trust Varnames to be in the right order to specify the colnames and rownames of the correlation matrix as I do below? proc iml; use cdat1; varNames = contents(); read all var _NUM_ into X[colname=varNames]; /* numerical data */ close cdat1; Z=corr(X,'Pearson','Pairwise'); mattrib Z rowname=varnames colname=varnames spearman rowname=varnames colname=varnames; nn=varnames`; create cmat from Z [colname=varNames]; append from Z; close cmat; create nmat from nn; append from nn; close nmat; quit; /*------------------------*/ data corrdat; merge nmat cmat; run; data corrdat; set corrdat; perm1=col1; drop col1; proc sort data=corrdat; by perm1; proc transpose data=corrdat out=corrdat1; by perm1; run;
... View more