楼主: vickykaul78
2875 4

[求助]请教各位SAS高手,如何把数据依每五分钟为一个区间 [推广有奖]

  • 0关注
  • 0粉丝

高中生

10%

还不是VIP/贵宾

-

威望
0
论坛币
1683 个
通用积分
0
学术水平
-1 点
热心指数
-1 点
信用等级
-1 点
经验
321 点
帖子
31
精华
0
在线时间
0 小时
注册时间
2007-11-21
最后登录
2010-7-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

请教各位SAS高手,如何将下列数据依每五分钟为一个区间,累加成交量及成交价

公司代号

SAS日期

SAS时间

累积成交量

成交量

成交价

时间

1102

15614

33241

100

37

9

09:14

1102

15614

33441

101

1

9

09:17

1102

15614

33561

102

1

9.05

09:19

1102

15614

34002

103

1

9.05

09:27

1102

15614

34082

108

5

9.1

09:28

1102

15614

34122

109

1

9.1

09:29

1102

15614

34162

110

1

9.15

09:30

1102

15614

34242

113

3

9.15

09:31

1102

15614

34322

134

21

9.15

09:32

1102

15614

34362

136

2

9.2

09:33

1102

15614

34442

149

13

9.2

09:34

1102

15614

34482

153

4

9.2

09:35

1102

15614

34522

173

20

9.15

09:36

1102

15614

34642

174

1

9.15

09:37

1102

15614

34842

179

5

9.15

09:41

1102

15614

35242

181

2

9.2

09:47

1102

15614

35282

192

11

9.2

09:48

1102

15614

35642

193

1

9.2

09:54

1102

15614

35722

194

1

9.2

09:55

1102

15614

35762

195

1

9.25

09:56

1102

15614

35802

204

9

9.25

09:57

求数据依每五分钟为一个区间,累加成交量及成交价

09:00~09:05累加成交量及成交价
09:06~09:10累加成交量及成交价
09:11~09:15累加成交量及成交价
09:16~09:20累加成交量及成交价
09:21~09:25累加成交量及成交价

二维码

扫码加我 拉你入群

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

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

关键词:五分钟 成交量 成交价 求数据 求助 数据 请教 高手 SAS

回帖推荐

fanly111 发表于4楼  查看完整内容

思路:1、导入数据data work.a;    LENGTH companyId 8 sasDate 8 sasTime 8 accumulateQty 8 exchangeQty 8 exchangePrice 8 time 8;infile datalines delimiter=' ';input companyId sasDate sasTime accumulateQty exchangeQty exchangePrice time:TIME.;   datalines;1102 15614 33241 100 37 9 09:141102 15614 33441 101 1 9 09:17 1102 15614 33561 102 1 9.05 09:19 1102 15614 34002 103 1 9.05 ...

hesummar 发表于3楼  查看完整内容

我发个程序给你,我的想法是把分钟数拿来归类,希望能帮上你。。。data work.a;    LENGTH companyId 8 sasDate 8 sasTime 8 accumulateQty 8 exchangeQty 8 exchangePrice 8 time 8;infile datalines delimiter=' ';input companyId sasDate sasTime accumulateQty exchangeQty exchangePrice time:TIME.;   datalines;1102 15614 33241 100 37 9 09:141102 15614 33441 101 1 9 09:17 1102 15614 33561 ...

本帖被以下文库推荐

沙发
haishan1214 发表于 2008-10-14 21:57:00 |只看作者 |坛友微信交流群
SAS里面有一个时间序列的,进去找一下,至于累加的话,那要涉及到SAS编程了,不过好像也看到过有人用里面的模块实现的,这个我没试过,可以的话就不用学编程了

使用道具

藤椅
hesummar 发表于 2008-10-15 20:57:00 |只看作者 |坛友微信交流群
我发个程序给你,我的想法是把分钟数拿来归类,希望能帮上你。。。


data work.a;
    LENGTH companyId 8 sasDate 8 sasTime 8 accumulateQty 8 exchangeQty 8 exchangePrice 8 time 8;
infile datalines delimiter=' ';
input companyId sasDate sasTime accumulateQty exchangeQty exchangePrice time:TIME.;  
datalines;
1102 15614 33241 100 37 9 09:14
1102 15614 33441 101 1 9 09:17
1102 15614 33561 102 1 9.05 09:19
1102 15614 34002 103 1 9.05 09:27
1102 15614 34082 108 5 9.1 09:28
1102 15614 34122 109 1 9.1 09:29
1102 15614 34162 110 1 9.15 09:30
1102 15614 34242 113 3 9.15 09:31
1102 15614 34322 134 21 9.15 09:32
1102 15614 34362 136 2 9.2 09:33
1102 15614 34442 149 13 9.2 09:34
1102 15614 34482 153 4 9.2 09:35
1102 15614 34522 173 20 9.15 09:36
1102 15614 34642 174 1 9.15 09:37
1102 15614 34842 179 5 9.15 09:41
1102 15614 35242 181 2 9.2 09:47
1102 15614 35282 192 11 9.2 09:48
1102 15614 35642 193 1 9.2 09:54
1102 15614 35722 194 1 9.2 09:55
1102 15614 35762 195 1 9.25 09:56
1102 15614 35802 204 9 9.25 09:57
;
run;

data work.b;
    set work.a;
    hour=PUT(INPUT(SUBSTR(put(time,hhmm5.),1,2),BEST12.),z2.);
    minute=SUBSTR(put(time,hhmm5.),LENGTH(put(time,hhmm5.))-1,2);
    IF  minute ge '01' AND minute le '05' THEN
        flag=1;
    ELSE IF minute ge '06' AND minute le '10' THEN
        flag=2;
    ELSE IF minute ge '11' AND minute le '15' THEN
        flag=3;
    ELSE IF minute ge '16' AND minute le '20' THEN
        flag=4;
    ELSE IF minute ge '21' AND minute le '25' THEN
        flag=5;
    ELSE IF minute ge '26' AND minute le '30' THEN
        flag=6;
    ELSE IF minute ge '31' AND minute le '35' THEN
        flag=7;
    ELSE IF minute ge '36' AND minute le '40' THEN
        flag=8;
    ELSE IF minute ge '41' AND minute le '45' THEN
        flag=9;
    ELSE IF minute ge '46' AND minute le '50' THEN
        flag=10;
    ELSE IF minute ge '51' AND minute le '55' THEN
        flag=11;
    ELSE
        flag=12;
run;

PROC SUMMARY DATA=work.b nway;
    CLASS companyId sasDate hour flag;
    VAR exchangeQty exchangePrice;
    OUTPUT out=work.c(DROP=_FREQ_ _TYPE_) sum=;
RUN;

DATA work.d;
    SET work.c;
    length INFO $30;
    IF flag eq 1 THEN
        INFO=hour||":01~"||hour||":05累加成交量及成交价";
    ELSE IF flag eq 2 THEN
        INFO=hour||":06~"||hour||":10累加成交量及成交价";
    ELSE IF flag eq 3 THEN
        INFO=hour||":11~"||hour||":15累加成交量及成交价";
    ELSE IF flag eq 4 THEN
        INFO=hour||":16~"||hour||":20累加成交量及成交价";
    ELSE IF flag eq 5 THEN
        INFO=hour||":21~"||hour||":25累加成交量及成交价";
    ELSE IF flag eq 6 THEN
        INFO=hour||":26~"||hour||":30累加成交量及成交价";
    ELSE IF flag eq 7 THEN
        INFO=hour||":31~"||hour||":35累加成交量及成交价";
    ELSE IF flag eq 8 THEN
        INFO=hour||":36~"||hour||":40累加成交量及成交价";
    ELSE IF flag eq 9 THEN
        INFO=hour||":41~"||hour||":45累加成交量及成交价";
    ELSE IF flag eq 10 THEN
        INFO=hour||":46~"||hour||":50累加成交量及成交价";
    ELSE IF flag eq 11 THEN
        INFO=hour||":51~"||hour||":55累加成交量及成交价";
    ELSE IF flag eq 12 THEN
        INFO=hour||":56~"||TRIM(LEFT(hour+1))||":00累加成交量及成交价";

RUN;


已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

板凳
fanly111 发表于 2008-10-16 21:19:00 |只看作者 |坛友微信交流群

思路:

1、导入数据

data work.a;
    LENGTH companyId 8 sasDate 8 sasTime 8 accumulateQty 8 exchangeQty 8 exchangePrice 8 time 8;
infile datalines delimiter=' ';
input companyId sasDate sasTime accumulateQty exchangeQty exchangePrice time:TIME.;  
datalines;
1102 15614 33241 100 37 9 09:14
1102 15614 33441 101 1 9 09:17
1102 15614 33561 102 1 9.05 09:19
1102 15614 34002 103 1 9.05 09:27
1102 15614 34082 108 5 9.1 09:28
1102 15614 34122 109 1 9.1 09:29
1102 15614 34162 110 1 9.15 09:30
1102 15614 34242 113 3 9.15 09:31
1102 15614 34322 134 21 9.15 09:32
1102 15614 34362 136 2 9.2 09:33
1102 15614 34442 149 13 9.2 09:34
1102 15614 34482 153 4 9.2 09:35
1102 15614 34522 173 20 9.15 09:36
1102 15614 34642 174 1 9.15 09:37
1102 15614 34842 179 5 9.15 09:41
1102 15614 35242 181 2 9.2 09:47
1102 15614 35282 192 11 9.2 09:48
1102 15614 35642 193 1 9.2 09:54
1102 15614 35722 194 1 9.2 09:55
1102 15614 35762 195 1 9.25 09:56
1102 15614 35802 204 9 9.25 09:57
;
run;

2、在原来的数据中增加一新变量,变量代表时间区间。

data b;
set a;
if time>=32400 and <=32700 then time1=1;
if time>=37600 and <=40000 then time1=2;
...
....
....
..
if time>=35760 and <=36000 then time1=n;
run;

3、以time1作为分类变量,分别对exchangeqty 和exchangeprice汇总。
proc means data=b n sum;
var exchangeqty exchangeprice;
class time1;
output out=c sum(exchangeqty)= sum(exchangeprice)=;
run;

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

报纸
vickykaul78 发表于 2008-10-17 09:48:00 |只看作者 |坛友微信交流群
非常感谢各位高手大大的帮忙,让我获益良多

使用道具

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

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

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

GMT+8, 2024-4-28 22:32