作者bbearh (go)
看板Statistics
标题Re: [程式] SAS IML
时间Mon Feb 13 01:24:37 2012
※ 引述《kurtasd (阿炫)》之铭言:
: ------------------------------------------------------------------------
: if then else之类的问题
: [问题叙述]:
: 目的:若A矩阵中元素符合一系列条件,则将此[i,j]复制到矩阵B中
: 问题1:有if A or B then...这个语法可用吗?
: 问题2:无法正确复制
: [程式范例]:
: proc iml;
: use t1 var _all_;
: read all into mat;
: rs=nrow(mat);
: cs=ncol(mat);
: k=0;
: mat1=repeat(1,rs,cs);
: do i=2 to rs; <-- 你确定从2 开始ok吗?
if A then do;
if B or C then do;
if D then do;
*add 你写的code here;
k=k+1;
mat1[k,1]=mat[i,1];
mat1[k,2]=mat[i,2];
mat1[k,3]=mat[i,3];
mat1[k,4]=mat[i,4];
mat1[k,5]=mat[i,5];
mat1[k,6]=mat[i,6];
mat1[k,7]=mat[i,7];
*if cs=7 可变成这行 ;
* matl[k,]=mat[i,]; * or matl[k,1:7]=mat[i,1:7];
end;
else do;
AAAAA;
end;
end;
else do;
BBBBB;
end;
end;
else do;
CCCCC;
end;
不确定你 else 要做的条件,
不过不管如何? 应是 AAAAA, BBBBB, CCCCC, 其中之一, 或3个都加入你写的
else do ... end.
希望对你有帮助...
: if 条件A then ; <== if 不是A, 就什麽都不会做.
: if 条件B or 条件C then;
: if 条件D then do; /*通过A以後,若通过BorC,且通过D则以i复制到k,若不通过 */
: k=k+1; /*则以i-1复制到k*/
: mat1[k,1]=mat[i,1];
: mat1[k,2]=mat[i,2];
: mat1[k,3]=mat[i,3];
: mat1[k,4]=mat[i,4];
: mat1[k,5]=mat[i,5];
: mat1[k,6]=mat[i,6];
: mat1[k,7]=mat[i,7];
: end;
: else if ;
: k=k+1;
: mat1[k,1]=mat[i-1,1];
: mat1[k,2]=mat[i-1,2];
: mat1[k,3]=mat[i-1,3];
: mat1[k,4]=mat[i-1,4];
: mat1[k,5]=mat[i-1,5];
: mat1[k,6]=mat[i-1,6];
: mat1[k,7]=mat[i-1,7];
: end;
: quit;
: run;
: -----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.104.13.95