全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1766 3
2016-08-29
悬赏 20 个论坛币 已解决
有数据集a,变量 stkcd date price,需要把那些出现次数不足n次的股票删除,我一般是这样做的:
proc sort data=a;
by stkcd;
run;

proc summary data=a;
var price;by stkcd;
output out=keep(where=(_freq_>=n)) mean=meanprice;
run;

data b(keep=stkcd date price);
merge a(in=a) keep(in=b);
by stkcd;
if a=b;
run;
这样得到的数据集b就删除了次数不足n次的股票。不知道有没有更加简洁的方法?(有时候需要处理上千万条记录,多一步都感觉很浪费时间)

最佳答案

独木者 查看完整内容

proc sql noprint; create table b as select * from a group by stkcd having count(stkcd)>3; quit;
二维码

扫码加我 拉你入群

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

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

全部回复
2016-8-29 10:15:55
proc sql noprint;
create table b as
        select * from a
                group by stkcd
                     having count(stkcd)>3;
quit;
二维码

扫码加我 拉你入群

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

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

2016-8-29 15:18:09
独木者 发表于 2016-8-29 10:15
proc sql noprint;
create table b as
        select * from a
谢谢,看来需要学习SQL了
二维码

扫码加我 拉你入群

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

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

2016-9-7 16:05:32
独木者 发表于 2016-8-29 10:15
proc sql noprint;
create table b as
        select * from a
神 这个方法好,太好了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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