Re: [程式] SAS 矩陣概念相對位置相加

看板Statistics作者 (謠指部總司令)時間9年前 (2015/06/28 07:20), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串3/3 (看更多)
其實還滿簡單的... 首先把Idy和_name_用不同的順序各合併一次: data bb; set aa; combine1 = catx('', idy, _name_); combine2 = catx('', _name_, idy); run; 然後把combine1和combine2分別排序也分別另存新檔: proc sort data=bb out=bb1; by combine1; run; proc sort data=bb out=bb2; by combine2; run; 此時你打開這兩個新的檔案就可以發現配對完成了,剩下的就是把資料再合併一次, 然後改一下變數名稱就能直接加總了: data cc; merge bb1(drop=combine2) bb2(keep=j i combine2 rename=(combine2=combine1 j=mj i=mi)); by combine1; sum=sum(i,j,mj,mi); run; 打完收工。 ※ 引述《sheiswe (no matter)》之銘言: : 不好意思資料有點長度~ : data AA; : Idy _name_ j i : X001 X001 12000 500 : X002 X001 0 200 : X003 X001 100 300 : X004 X001 100 23 : X005 X001 5000 333 : X001 X002 101 532 : X002 X002 0 863 : X003 X002 705 101 : X004 X002 305 201 : X005 X002 505 103 : X001 X003 101 532 : X002 X003 0 863 : X003 X003 405 101 : X004 X003 405 201 : X005 X003 525 103 : X001 X004 121 532 : X002 X004 0 863 : X003 X004 705 101 : X004 X004 305 201 : X005 X004 505 103 : X001 X005 101 532 : X002 X005 0 863 : X003 X005 705 101 : X004 X005 305 201 : X005 X005 505 103 : 也可以看成是5x5的矩陣 : 如何能 X002 X001 和相對的 i和j 都一起相加? : Idy _name_ j i : X002 X001 0 200 : X001 X002 101 532 : X005 X003 505 103 : X003 X005 705 101 : 想要的結果 : Idy _name_ mIdy m_name_ j i mj mi sum : X003 X003 X003 X003 405 101 405 101 1012 : X002 X001 X001 X002 0 200 101 532 833 : X005 X003 X003 X005 505 103 705 101 1414 : 本來想要下條件if Idy=_name_,卻反而只能配對到相同位置的。 : 跟大大們求好方法^^a : 真的感恩~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 139.52.242.104 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1435447258.A.870.html

06/29 10:53, , 1F
看到大大回覆真開心,馬上也來試試,謝謝分享
06/29 10:53, 1F

06/30 13:02, , 2F
大大的方法我也試了,真的謝謝無私
06/30 13:02, 2F
文章代碼(AID): #1LZo_QXm (Statistics)
文章代碼(AID): #1LZo_QXm (Statistics)