作者chien533 (谣指部总司令)
站内Statistics
标题Re: [问题] SAS 矩阵概念相对位置相加
时间Sun Jun 28 07:20:55 2015
其实还满简单的...
首先把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://webptt.com/cn.aspx?n=bbs/Statistics/M.1435447258.A.870.html
1F:→ sheiswe: 看到大大回覆真开心,马上也来试试,谢谢分享 06/29 10:53
2F:→ sheiswe: 大大的方法我也试了,真的谢谢无私 06/30 13:02