SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 624|回复: 2
打印 上一主题 下一主题

大数据库分组计算问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-6-24 05:40:40 | 只看该作者

大数据库分组计算问题

债券交易数据求助
ID     date             time    price
AA    20090112
AA    20090116
AA    20090211
BB
BB
BB
CC
CC
余下形式与第一列举例类似,观测值有上百万个。我如何能实现对债券分组计算呢?比如说按照ID分组,我要计算AA在2009年1月的的平均价格,怎样用一个命令实现对所有的债券分别计算并生成新变量呢?另外我能用什么命令查询数据库中的债券数量?
还有,债券每个月必须有两个以上观测值,我该用干什么样的命令进行数据筛选?
问题比较多,希望有高手帮忙!!!多谢了!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-6-24 23:59:49 | 只看该作者

Re: 大数据库分组计算问题

没有完全看懂你的data,比如date time price,我就随意修改了一下,比如:date time我就看作一个变量,且添加了price值,。

[code:mvu5ag2n]
DATA A;
input ID $ time yymmdd8. price;
format time date9.;
cards;
AA 20090112 20
AA 20090116 23
AA 20090211 36
AA 20090219 30
BB 20050327 12
BB 20050323 15
CC 20050420 17
DD 20030420 100
;
run;
proc sql;
create table aa(drop=cnt) as
  select *,mean(price) as avg_p format=8.2
    from (select *,count(*) as cnt
            from (select *,count(distinct ID) as total_ID,year(time) as yr,month(time) as month
                    from a)
           group by id,month
          having cnt>1)
  group by id,yr,month
having time=min(time)
   order by id;
quit;[/code:mvu5ag2n]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-6-25 17:42:36 | 只看该作者

Re: 大数据库分组计算问题

多谢楼上的回答!time那个变量是我的疏忽,我已经取了每天的最后一个交易了。所以那个变量在我这个问题里面已经没有用处了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 03:41 , Processed in 0.067984 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表