楼主: chenqjbaby
3216 8

[原创博文] 请问怎么在一个按time排序的股票交易行情表上每隔五分钟抽取一条记录? [推广有奖]

  • 0关注
  • 0粉丝

初中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
519 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
213 点
帖子
14
精华
0
在线时间
10 小时
注册时间
2011-1-31
最后登录
2021-5-21

楼主
chenqjbaby 发表于 2012-6-1 21:14:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

本人才刚学sas没多久。。遇到这种题。。

还请各位大牛帮忙啊~~~~><

第一次发求助帖。。。

先谢谢大家了!!><~


原题: 抽取数据集data.hf0000125分钟的高频交易记录。(即从930开始,每5分钟抽取一次,若在5分钟时点上没有对应记录则以5分钟后离该时点最近的一次记录作为其5分钟交易记录,例如在9:35:00没有记录,但在9:35:01有记录,则抽取9:35:01的记录作为其5分钟交易记录)。

data.hf000012(部分)stkcd  time                   prevclpr oppr000012 01JUN2006:09:25:50.00  10.4000  0.0000000012 01JUN2006:09:31:04.00  10.4000  10.3700000012 01JUN2006:09:31:42.00  10.4000  10.3700000012 01JUN2006:09:32:12.00  10.4000  10.3700000012 01JUN2006:09:34:40.00  10.4000  10.3700000012 01JUN2006:09:34:55.00  10.4000  10.3700000012 01JUN2006:09:35:08.00  10.4000  10.3700000012 01JUN2006:09:35:18.00  10.4000  10.3700000012 01JUN2006:09:36:02.00  10.4000  10.3700000012 01JUN2006:09:36:54.00  10.4000  10.3700000012 01JUN2006:09:37:30.00  10.4000  10.3700000012 01JUN2006:09:38:43.00  10.4000  10.3700000012 01JUN2006:09:39:22.00  10.4000  10.3700000012 01JUN2006:09:40:08.00  10.4000  10.3700000012 01JUN2006:09:40:41.00  10.4000  10.3700000012 01JUN2006:09:41:08.00    10.4000   10.3700000012 01JUN2006:09:41:47.00  10.4000  10.3700000012 01JUN2006:09:42:12.00  10.4000  10.3700
每次遇到某变量需符合一定要求 然后抽取另一种变量的时候我就傻了。。。。。。搜了好久都木有搜到相关资料。。很是愁苦啊>.<无奈只好发求助帖啦~希望大家能帮忙~谢谢大家!

二维码

扫码加我 拉你入群

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

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

关键词:time 股票交易 五分钟 Tim IME 股票交易 记录

沙发
chenqjbaby 发表于 2012-6-1 21:34:21
呃 怎么发了帖数据格式就不对了。。。是
stkcd time prevclpr oppr 对应的四列数据…
000012 01JUN2006:09:25:50.00 10.4000  10.3700

藤椅
00810112 发表于 2012-6-5 11:03:50
我来试试,楼主看看是不是符合你的要求:
data d1;
        set stck;
        retain time_lag 0;
        if time-time_lag>300 then do;
                output;
                time_lag=time;
        end;
        run;

板凳
bolus123 发表于 2012-6-5 16:56:55
data a;
set hf000012;
if lag(time)>0 then do;
     if time-lag(time)>5*60 then output;
else do;output;end;
run;

报纸
chenqjbaby 发表于 2012-6-5 23:29:21
bolus123 发表于 2012-6-5 16:56
data a;
set hf000012;
if lag(time)>0 then do;
谢谢你回复我~
这个是日志。。


NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      1 530:13
NOTE: 从数据集 DATA.HF000012 读取了 65834 个观测。
NOTE: 数据集 WORK.A 有 65833 个观测和 31 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.20 秒
      CPU 时间         0.18 秒

最后得到的数据集里基本还是每条记录都有诶。。

地板
chenqjbaby 发表于 2012-6-5 23:30:39
bolus123 发表于 2012-6-5 16:56
data a;
set hf000012;
if lag(time)>0 then do;
对了 你少写个end~我补上了然后是这个日志~

7
chenqjbaby 发表于 2012-6-5 23:32:11
00810112 发表于 2012-6-5 11:03
我来试试,楼主看看是不是符合你的要求:
data d1;
        set stck;
哇塞!这个是对的诶!谢谢亲~~~~~~
我们老师都说她不太懂lag的机理。。让我们别用自己不熟悉的函数呢~
谢谢你啊~~~~~><

8
chenqjbaby 发表于 2012-6-5 23:33:11
bolus123 发表于 2012-6-5 16:56
data a;
set hf000012;
if lag(time)>0 then do;
同学你楼上的那个可以得出正确结果哦~
嗯。。再次感谢你回复我~~

9
raymonica 发表于 2012-6-5 23:45:29
thanks, good to know.

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

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