全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2267 7
2012-03-08
悬赏 50 个论坛币 已解决

dt

stock_code

op

hp

lp

vol

20100416

IF1005

3450

3488

3413.2

48988

20100416

IF1006

3470

3517.6

3440

4908

20100416

IF1009

3600

3647.8

3505.4

1730

20100416

IF1012

3618.8

3669

3551.2

2831

20100419

IF1005

3396

3398

3166.2

109733

20100419

IF1006

3420

3420

3195.2

8093

20100419

IF1009

3482.2

3482.2

3256.8

2471

20100419

IF1012

3531.2

3532

3308.8

3315

20100420

IF1005

3209.2

3240

3168.8

141862

20100420

IF1006

3227.2

3261

3198

8005

20100420

IF1009

3268

3323

3245.2

1979

20100420

IF1012

3332.2

3370

3315.8

1573

20100421

IF1005

3215

3281.2

3208

114531


。。。。。。

两个问题:
1、添加一列,FLAG
每一天的第一条数据FLAG=1
每一天的第二条数据FLAG=2
每一天的第三条数据FLAG=3
每一天的第四条数据FLAG=4
变成

dt

stock_code

op

hp

lp

vol

FLAG

20100416

IF1005

3450

3488

3413.2

48988

1

20100416

IF1006

3470

3517.6

3440

4908

2

20100416

IF1009

3600

3647.8

3505.4

1730

3

20100416

IF1012

3618.8

3669

3551.2

2831

4

20100419

IF1005

3396

3398

3166.2

109733

1

20100419

IF1006

3420

3420

3195.2

8093

2

20100419

IF1009

3482.2

3482.2

3256.8

2471

3

20100419

IF1012

3531.2

3532

3308.8

3315

4

20100420

IF1005

3209.2

3240

3168.8

141862

1

20100420

IF1006

3227.2

3261

3198

8005

2

20100420

IF1009

3268

3323

3245.2

1979

3

20100420

IF1012

3332.2

3370

3315.8

1573

4

20100421

IF1005

3215

3281.2

3208

114531

1





2、添加一列FLAG,每一天vol最大的FLAG=1
如下表

dt

stock_code

op

hp

lp

vol

FLAG

20100416

IF1005

3450

3488

3413.2

4908

20100416

IF1006

3470

3517.6

3440

4908

20100416

IF1009

3600

3647.8

3505.4

48988

1

20100416

IF1012

3618.8

3669

3551.2

2831

20100419

IF1005

3396

3398

3166.2

109733

1

20100419

IF1006

3420

3420

3195.2

8093

20100419

IF1009

3482.2

3482.2

3256.8

2471

20100419

IF1012

3531.2

3532

3308.8

3315

20100420

IF1005

3209.2

3240

3168.8

141862

1

20100420

IF1006

3227.2

3261

3198

8005

20100420

IF1009

3268

3323

3245.2

1979

20100420

IF1012

3332.2

3370

3315.8

1573

20100421

IF1005

3215

3281.2

3208

114531

1







最佳答案

yugao1986 查看完整内容

data b; set a; by dt notsorted; if first.dt then flag=1; else flag+1; run;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-8 22:15:58
data b;
   set a;
   by dt notsorted;
   if first.dt then flag=1;
   else flag+1;   
run;
二维码

扫码加我 拉你入群

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

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

2012-3-8 23:31:24
恩,谢谢,第二个问题呢
二维码

扫码加我 拉你入群

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

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

2012-3-9 00:00:29
第二个:
复制代码
二维码

扫码加我 拉你入群

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

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

2012-3-9 00:54:52
我自己写的算法

/*原数据有很多重复值,3月份很多数据是错误的*/

/*求主力合约*/
proc sql;
create table ifhq1 as
select distinct *
from data.ifhq
group by dt, stock_code;

create table ifhq2 as
select        dt,max(vol) as maxvol
from ifhq1
group by dt;

create table zlhy as
select        distinct b.*
from ifhq2 a left join ifhq1 b
on  b.vol=a.maxvol
order by dt;

quit;

/*求当月,下月,下季,隔季合约*/

data ifhq1;
    set ifhq1;
    by dt;
    if first.dt then flag=1;
    else flag+1;   
run;

data dylx;
    set ifhq1;
    by dt ;
    if flag=1 ;
run;
data xylx;
    set ifhq1;
    by dt ;
    if flag=2 ;
run;

data xjlx;
    set ifhq1;
    by dt ;
    if flag=3 ;
run;
data gjlx;
    set ifhq1;
    by dt ;
    if flag=4 ;
run;
二维码

扫码加我 拉你入群

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

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

2012-3-9 09:49:14
air320322 发表于 2012-3-9 00:54
我自己写的算法

/*原数据有很多重复值,3月份很多数据是错误的*/
wonderful,为什么要将flag=1,2,3,4分为不同的数据集呢?另外数据很大的话,3楼的proc sort是否会影响效率?
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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