全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1842 4
2013-12-19
悬赏 100 个论坛币 已解决
求助一个问题,总目标是做分类合计的,但是他要求的分类全是闭区间,就有点麻烦了,想了一会感觉用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;

想做成的结果:
SubjidXSUM说明

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~~

最佳答案

yongyitian 查看完整内容

SAS HASH Object 还有一个名字叫 associativearray, 所以原则上说用array可以做的事情,用hash object 应该也可以做到。 下面程序是此问题用 hash object 的做法, 其中包括了用hash做分组求和,填充缺失值,和指定闭区间求和。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-12-19 15:53:34
Tigflanker 发表于 2013-12-20 12:54
不好意思,我没选你的答案,因为我想通过这个学习HASH,这个我已经用数组(count1 到 count5) + Transpo ...
SAS HASH Object 还有一个名字叫 associativearray, 所以原则上说用array可以做的事情,用hash object 应该也可以做到。

下面程序是此问题用 hash object 的做法, 其中包括了用hash做分组求和,填充缺失值,和指定闭区间求和。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-19 18:38:23
考虑到subjid是什么意思?subjid也是有不同值?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-20 10:46:20
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-20 12:54:44
yongyitian 发表于 2013-12-20 10:46
不好意思,我没选你的答案,因为我想通过这个学习HASH,这个我已经用数组(count1 到 count5) + Transpose做好了

你写的我只能给你加这么多,不好意思,谢谢啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群