楼主: tiaotiaotang
4125 17

怎么统计字符的频数 [推广有奖]

  • 1关注
  • 3粉丝

已卖:2份资源

博士生

37%

还不是VIP/贵宾

-

威望
0
论坛币
2945 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
4186 点
帖子
119
精华
0
在线时间
378 小时
注册时间
2007-12-14
最后登录
2025-1-12

楼主
tiaotiaotang 发表于 2011-11-23 22:00:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想利用股票高频数据计算每只股票每日买入和卖出次数。看了坛子里有关的频数帖子还是写不出来。请高手指点,谢谢!
原始数据:S表示卖,B表示买。需要按每只股票每日统计S和B出现的次数。

Code

Qdate

Trdirec

000002

2009-01-05

S

000002

2009-01-05

S

000002

2009-01-05

B

000002

2009-01-05

F

000003

2009-01-05

S

000003

2009-01-05

S

000003

2009-01-05

S

000003

2009-01-05

B

000002

2009-02-05

F

000002

2009-02-05

S

000002

2009-02-05

S

000002

2009-02-05

B

000003

2009-02-05

S

000003

2009-02-05

B

000003

2009-02-05

B

000003

2009-02-05

B


希望得到的数据

Code

Qdate

buys

sells

000002

2009-01-05

1

2

000003

2009-01-05

1

3

000002

2009-02-05

1

2

000003

2009-02-05

3

1


二维码

扫码加我 拉你入群

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

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

关键词:sells code date Sell Buys 统计 高频

本帖被以下文库推荐

沙发
tj0412ymy 发表于 2011-11-23 23:10:29
  1. data stock;        
  2. input Code $  Qdate yymmdd10. Trdirec $;
  3. datalines;
  4. 2 2009-01-05 S
  5. 2 2009-01-05 S
  6. 2 2009-01-05 B
  7. 2 2009-01-05 F
  8. 3 2009-01-05 S
  9. 3 2009-01-05 S
  10. 3 2009-01-05 S
  11. 3 2009-01-05 B
  12. 2 2009-02-05 F
  13. 2 2009-02-05 S
  14. 2 2009-02-05 S
  15. 2 2009-02-05 B
  16. 3 2009-02-05 S
  17. 3 2009-02-05 B
  18. 3 2009-02-05 B
  19. 3 2009-02-05 B
  20. ;
  21. run;

  22. proc sql;
  23. select a.code,a.Qdate format=yymmdd10.,a.buys,b.sells
  24. from
  25. (select code,Qdate,count(Trdirec) as buys
  26. from stock
  27. group by code,Qdate,Trdirec
  28. having Trdirec='B') a,
  29. (select code,Qdate,count(Trdirec) as sells
  30. from stock
  31. group by code,Qdate,Trdirec
  32. having Trdirec='S') b
  33. where  a.code=b.code and a.Qdate=b.Qdate
  34. order by  a.Qdate,a.code
  35. ;
  36. quit;
复制代码
已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
webgu + 1 + 1 + 1 观点有启发
tiaotiaotang + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 3  论坛币 + 3  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

藤椅
crazygoing 发表于 2011-11-24 08:53:45
用tabulate也可以解决,你可以直接把结果的F统计数删除即可
  1. data stock;        
  2. input Code $ Qdate yymmdd10. Trdirec $;
  3. datalines;
  4. 2 2009-01-05 S
  5. 2 2009-01-05 S
  6. 2 2009-01-05 B
  7. 2 2009-01-05 F
  8. 3 2009-01-05 S
  9. 3 2009-01-05 S
  10. 3 2009-01-05 S
  11. 3 2009-01-05 B
  12. 2 2009-02-05 F
  13. 2 2009-02-05 S
  14. 2 2009-02-05 S
  15. 2 2009-02-05 B
  16. 3 2009-02-05 S
  17. 3 2009-02-05 B
  18. 3 2009-02-05 B
  19. 3 2009-02-05 B
  20. ;
  21. run;
  22. proc tabulate data=stock f=best.;
  23. class code trdirec qdate;
  24. format qdate  yymmdd10.;
  25. table qdate*code,trdirec;
  26. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
tiaotiaotang + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

板凳
novice505 发表于 2011-11-24 09:02:28
  1. proc sql noprint;
  2.         create table want as
  3.                 select code,qdate format=yymmdd10.,sum(trdirec='B') as buys,sum(trdirec='S') as sells
  4.                 from stock group by code,qdate;
  5. quit;
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
webgu + 1 + 1 + 1 精彩帖子
tiaotiaotang + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

报纸
tiaotiaotang 发表于 2011-11-24 10:12:05
谢谢以上三位的回复,另外还想问一下,用PROC summary 或者PROC SQL +count 能否实现。我用这两个试了都没成
我写的程序:
proc sql;
title 'buys sells';
select code,qdate,
count(trdirec,'B') as n label='buys',
count(trdirec,'S') as n label='sells'
from stock
group by code,qdate;
quit;

日志里提示:WARNING: GROUP BY 子句已变换为 ORDER BY 子句,因为 SELECT 子句和相关表的表达式的可选 HAVING 子句都没有引用汇总函数。

我看了结果是逐条数的,没有汇总,是什么原因呢?count没有汇总功能吗?
谢谢了!

地板
cathy3212 发表于 2011-11-24 10:33:50
我觉得是count用的不是很对,不过可能我的学习也不够深入。
proc sql;
title 'buys sells';
select distinct
code,qdate,count(trdirec) as n
from stock
group by code,qdate,trdirec;
quit;

7
tiaotiaotang 发表于 2011-11-24 10:50:33
cathy3212 发表于 2011-11-24 10:33
我觉得是count用的不是很对,不过可能我的学习也不够深入。
proc sql;
title 'buys sells';
谢谢您的回复,不过也实现不了,我需要的是分别统计B\S,这样是一起计数的。而且代码、时间也不对。不知道是不是group by 用的不对。一起学习了,一起等待大牛解惑。

8
tj0412ymy 发表于 2011-11-24 11:54:45
tiaotiaotang 发表于 2011-11-24 10:12
谢谢以上三位的回复,另外还想问一下,用PROC summary 或者PROC SQL +count 能否实现。我用这两个试了都没成 ...
Using SUM+COUNT. Mostly the same code as one given by 'novice505'.
  1. proc sql;
  2. title 'buys sells';
  3. select code,qdate format=yymmdd10.,
  4. sum(count(trdirec,'B')) as n label='buys',
  5. sum(count(trdirec,'S')) as n label='sells'
  6. from stock
  7. group by code,qdate;
  8. quit;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

9
cathy3212 发表于 2011-11-24 12:06:36
  1. data stock;        
  2. input Code $ Qdate yymmdd10. Trdirec $;
  3. datalines;
  4. 2 2009-01-05 S
  5. 2 2009-01-05 S
  6. 2 2009-01-05 B
  7. 2 2009-01-05 F
  8. 3 2009-01-05 S
  9. 3 2009-01-05 S
  10. 3 2009-01-05 S
  11. 3 2009-01-05 B
  12. 2 2009-02-05 F
  13. 2 2009-02-05 S
  14. 2 2009-02-05 S
  15. 2 2009-02-05 B
  16. 3 2009-02-05 S
  17. 3 2009-02-05 B
  18. 3 2009-02-05 B
  19. 3 2009-02-05 B
  20. ;
  21. run;
  22. proc sql;
  23. create table ss as select
  24. code,qdate,trdirec,
  25. count(*) as n
  26. from stock
  27. group by code,qdate,trdirec;
  28. quit;
  29. proc sql;
  30. title 'buys sells';
  31. select a.code,a.qdate,a.n as buys,b.n as sells
  32. from ss as a inner join ss as b
  33. on a.code=b.code
  34. and a.qdate=b.qdate
  35. and a.trdirec='B'
  36. and b.trdirec='S';
  37. quit;
复制代码
试试这个,我之前的那个我是运行得出来的,就是结果不对

10
tj0412ymy 发表于 2011-11-24 13:47:18
A solution in Data Step.
  1. proc sort data=stock out=temp;by code Qdate Trdirec;
  2. run;
  3. data want;
  4. format code $2. Qdate yymmdd10.;
  5. retain buys 0 sells 0;
  6. set temp;
  7. by code Qdate Trdirec;
  8. if first.Qdate  then do;
  9. sells=0;buys=0;
  10. end;
  11. if Trdirec='S' then do;
  12. sells+1;
  13. end;
  14. if Trdirec='B' then do;
  15. buys+1;
  16. end;
  17. if last.Qdate then output;
  18. drop Trdirec;
  19. run;
  20. proc print;run;
复制代码
对SAS和统计方面感兴趣的朋友,请加SAS学习和认证讨论群:169157207。欢迎在群上讨论!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 18:45