Re: [程式] SAS IML

看板Statistics作者 (go)時間14年前 (2012/02/13 01:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1FD_NN0K (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1FD_NN0K (Statistics)