求助一个问题,总目标是做分类合计的,但是他要求的分类全是闭区间,就有点麻烦了,想了一会感觉用HASH表做比较好,但是本人HASH水平也能做个inner join,故还请求助。。。
数据如下:(subjid是观测的ID,在这里只列出了 ‘第一个人’ 的情况)
data a;
input value x subjid;
cards;
1 1 001
2 1 001
3 2 001
4 2 001
5 2 001
6 3 001
7 3 001
8 5 001
;
run;
想做成的结果:
| Subjid | X | SUM | 说明 |
001 | [1,2] | 15 | 1+2+3+4+5 |
001 | [2,3] | 25 | 3+…+7 |
001 | [3,4] | 13 | 6+7+0 |
001 | [4,5] | 8 | 0+8 |
001 | [1,5] | 36 | 1+…+8,觉得麻烦就不做哈 |
002 | [1,2] | … |
|
| … | … | … |
|
请朋友们帮助哈,谢谢!!
更新:
大概是这个意思,
data b;
if 0 then set a;
if _n_=1 then do;
dcl hash h(dataset:'a');
h.definekey('x');
h.definedata(all:'Y');
h.definedone();
end;
do i = 1 to 4;
j = i + 1;
if not h.find(key:i) or not h.find(key:j) then sum+value;
output;
end;
run;
不过值不对,而且也没考虑到subjid。。
在线等呵,ths~~