标题: 大数据库分组计算问题 [打印本页] 作者: shiyiming 时间: 2011-6-24 05:40 标题: 大数据库分组计算问题 债券交易数据求助
ID date time price
AA 20090112
AA 20090116
AA 20090211
BB
BB
BB
CC
CC
余下形式与第一列举例类似,观测值有上百万个。我如何能实现对债券分组计算呢?比如说按照ID分组,我要计算AA在2009年1月的的平均价格,怎样用一个命令实现对所有的债券分别计算并生成新变量呢?另外我能用什么命令查询数据库中的债券数量?
还有,债券每个月必须有两个以上观测值,我该用干什么样的命令进行数据筛选?
问题比较多,希望有高手帮忙!!!多谢了!!!作者: shiyiming 时间: 2011-6-24 23:59 标题: 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]作者: shiyiming 时间: 2011-6-25 17:42 标题: Re: 大数据库分组计算问题 多谢楼上的回答!time那个变量是我的疏忽,我已经取了每天的最后一个交易了。所以那个变量在我这个问题里面已经没有用处了。