Re: [程式] SAS 矩陣概念相對位置相加
其實還滿簡單的...
首先把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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):