各位大侠:
我想取出如下矩阵的下三角元素,就是对角线1以下的数据,我歪打正着的代码完成了任务,没有do循环式我明白input命令加@或@@写入数据的方式和结果,但是现在我不能理解中间的do循环命令是怎么运行出这个结果的,请各位指点。另外请赐教更好的办法。(以下数据存在外部文本文件中)
%macro c(number);
data e;
infile "c:\0\exercise\co.txt" ;
%do i=0 %to &number;
input y&i@; /*如果改成两个@就出不来下三角了*/
if y&i=1 then output;
%end;
run;
%mend c;
%c(9);/*这时调用的数量如果小于数据的列数,比如上面输出的是10列数据,现在用小于等于10的数字都行,还是可以出来下三角矩阵,跟一个@有关*/
1 0.0534466777 0.1314492293 0.0509244969 0.0938998967 0.0045149487 0.0060782696 -0.038716537 0.0438832878 -0.048090978
0.0534466777 1 0.0375501908 0.088629979 0.056103275 0.0000918772 0.0750915225 0.140482325 -0.055662144 0.0123267467
0.1314492293 0.0375501908 1 0.2521603917 0.0152870163 -0.02421063 -0.021031116 -0.206481476 -0.001244938 0.0179999469
0.0509244969 0.088629979 0.2521603917 1 -0.071106839 -0.034661846 -0.014004027 -0.095376224 -0.026158074 0.01520412
0.0938998967 0.056103275 0.0152870163 -0.071106839 1 -0.025123804 0.0399335021 0.0742352998 -0.04659544 0.0426528091
0.0045149487 0.0000918772 -0.02421063 -0.034661846 -0.025123804 1 -0.273784637 -0.005511429 0.0039295092 -0.04783078
0.0060782696 0.0750915225 -0.021031116 -0.014004027 0.0399335021 -0.273784637 1 0.1717428277 -0.009636716 -0.049893159
-0.038716537 0.140482325 -0.206481476 -0.095376224 0.0742352998 -0.005511429 0.1717428277 1 -0.056612897 0.0711008745
0.0438832878 -0.055662144 -0.001244938 -0.026158074 -0.04659544 0.0039295092 -0.009636716 -0.056612897 1 -0.026407503
-0.048090978 0.0123267467 0.0179999469 0.01520412 0.0426528091 -0.04783078 -0.049893159 0.0711008745 -0.026407503 1