楼主: Arsaces
1496 3

有没有更简单的方法来删除频率不够n次的记录? [推广有奖]

  • 2关注
  • 2粉丝

硕士生

78%

还不是VIP/贵宾

-

威望
0
论坛币
5421 个
通用积分
10.9939
学术水平
8 点
热心指数
8 点
信用等级
7 点
经验
1652 点
帖子
66
精华
0
在线时间
248 小时
注册时间
2012-10-6
最后登录
2023-5-6

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;
关键词:有没有 Summary output stkcd Price sas 删除频率不足记录 简洁方法
沙发
独木者 发表于 2016-8-29 10:15:55 |只看作者 |坛友微信交流群
proc sql noprint;
create table b as
        select * from a
                group by stkcd
                     having count(stkcd)>3;
quit;

使用道具

藤椅
Arsaces 发表于 2016-8-29 15:18:09 |只看作者 |坛友微信交流群
独木者 发表于 2016-8-29 10:15
proc sql noprint;
create table b as
        select * from a
谢谢,看来需要学习SQL了

使用道具

板凳
linshuhe123 发表于 2016-9-7 16:05:32 |只看作者 |坛友微信交流群
独木者 发表于 2016-8-29 10:15
proc sql noprint;
create table b as
        select * from a
神 这个方法好,太好了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 19:08