Re: [程式] SAS IML
※ 引述《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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):