楼主: air320322
2240 7

[有偿编程] 给数据排序并贴标签 [推广有奖]

  • 4关注
  • 0粉丝

讲师

81%

还不是VIP/贵宾

-

威望
0
论坛币
11520 个
通用积分
9.5113
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3826 点
帖子
241
精华
0
在线时间
989 小时
注册时间
2005-5-28
最后登录
2025-10-12

楼主
air320322 发表于 2012-3-8 22:15:57 |AI写论文
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;
关键词:贴标签 Stock Flag code stoc 1730 标签 数据
不明真相的群众

沙发
yugao1986 发表于 2012-3-8 22:15:58
data b;
   set a;
   by dt notsorted;
   if first.dt then flag=1;
   else flag+1;   
run;
三人行必有我师

藤椅
air320322 发表于 2012-3-8 23:31:24
恩,谢谢,第二个问题呢
不明真相的群众

板凳
jinlin2009 发表于 2012-3-9 00:00:29
第二个:
  1. proc sort data=org;
  2. by dt descending vol;
  3. run;
  4. data flag;
  5. set org;
  6. by dt vol;
  7. if first.dt and first.vol;
  8. flag=1;
  9. run;
  10. proc sql noprint;
  11. create table joins as
  12. select a.*, b.flag
  13. from org a left join flag b
  14. on a.dt=b.dt and a.stock_code = b.stock_code
  15. ;
  16. quit;
复制代码

报纸
air320322 发表于 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;
不明真相的群众

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

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

7
sunset1986 发表于 2012-3-9 11:20:33
很好的代码,多谢~
An honest tale speeds best being plainly told.
Cheers!

8
tanzhijun 发表于 2012-3-13 17:46:21
学习了
去阅读,去写作,去热恋

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 04:08