楼主: sausau
3187 7

[原创博文] 请教关于用sas 做计数的问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

54%

还不是VIP/贵宾

-

威望
0
论坛币
218 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3019 点
帖子
100
精华
0
在线时间
72 小时
注册时间
2009-3-7
最后登录
2022-12-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如 需要知道 2010年2月3号 前,后10个交易日的数据(日期是不连续的),就是前后10个obs, 怎么从一堆数据里面把这21天数据提出来啊?

如果生成一个变量叫 edate,把2月3号的值设置为0,那么2月2号应该是-1,2月1号是-2,1月29号是-3,诸如此类,一直算到-10;2月4号为1,一直推到10。 数据里面都是交易日的数据。

本来想用count ,结果完全不知道怎么写程序。

希望最后能出来的结果是这样的, 就是要把edate 那列做出来。我的能力就只能把0 那个做出来,倒着数和正着数都完全迷茫……

OBS  DATE   EDATE  RET
1                      -10
2                       -9
3                       -8
……
11                      0
……
21                    10


谢谢在此活动的牛人们!!!
二维码

扫码加我 拉你入群

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

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

关键词:Count date ATE EDA 交易日 交易日 count 程序 能力

回帖推荐

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

There is a point access option on data set you may use in this case. Here is an example. data tmp; do date='23jan2010'd to '23mar2010'd; x+1; if weekday(date) not in (6,7) then output; end; run; proc print data=tmp; format date date9.; run; data tmp2; set tmp; k+1; if date='01MAR2010'd then do; do n=-10 to 10; point=max(1,n+k) ...

bobguy 发表于5楼  查看完整内容

This one is more efficient. If your data contain weekend obs, you can modify it on the condition of week days. data tmp2; set tmp; week2=intnx('week', '01MAR2010'd,2)+1; week_2=intnx('week', '01MAR2010'd,-2)+1; if week_2

本帖被以下文库推荐

沙发
sdu0632 发表于 2010-3-5 02:58:04 |只看作者 |坛友微信交流群
data test;
set test1;
where (2010年2月3号)d -10=<data<=(2010年2月3号)d +10;
run;

使用道具

藤椅
sausau 发表于 2010-3-5 03:05:24 |只看作者 |坛友微信交流群
谢谢楼上的
不过,这个数据里面只有交易日,就是说日期不是连续的,没有周6和周日和法定假日

使用道具

板凳
bobguy 发表于 2010-3-5 08:29:27 |只看作者 |坛友微信交流群
sausau 发表于 2010-3-5 02:27
比如 需要知道 2010年2月3号 前,后10个交易日的数据(日期是不连续的),就是前后10个obs, 怎么从一堆数据里面把这21天数据提出来啊?

如果生成一个变量叫 edate,把2月3号的值设置为0,那么2月2号应该是-1,2月1号是-2,1月29号是-3,诸如此类,一直算到-10;2月4号为1,一直推到10。 数据里面都是交易日的数据。

本来想用count ,结果完全不知道怎么写程序。

希望最后能出来的结果是这样的, 就是要把edate 那列做出来。我的能力就只能把0 那个做出来,倒着数和正着数都完全迷茫……

OBS  DATE   EDATE  RET
1                      -10
2                       -9
3                       -8
……
11                      0
……
21                    10


谢谢在此活动的牛人们!!!
There is a point access option on data set you may use in this case.

Here is an example.

data tmp;
   do date='23jan2010'd to '23mar2010'd;
       x+1;
       if weekday(date) not in (6,7) then output;
    end;
run;

proc print data=tmp;
format date date9.;
run;

data tmp2;
   set tmp;
   k+1;
   if date='01MAR2010'd then do;
     do n=-10  to 10;
        point=max(1,n+k);
       set tmp point=point;
       output;
     end;
    end;
    run;

proc print;
format date date9.;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

使用道具

报纸
bobguy 发表于 2010-3-5 08:44:36 |只看作者 |坛友微信交流群
sausau 发表于 2010-3-5 02:27
比如 需要知道 2010年2月3号 前,后10个交易日的数据(日期是不连续的),就是前后10个obs, 怎么从一堆数据里面把这21天数据提出来啊?

如果生成一个变量叫 edate,把2月3号的值设置为0,那么2月2号应该是-1,2月1号是-2,1月29号是-3,诸如此类,一直算到-10;2月4号为1,一直推到10。 数据里面都是交易日的数据。

本来想用count ,结果完全不知道怎么写程序。

希望最后能出来的结果是这样的, 就是要把edate 那列做出来。我的能力就只能把0 那个做出来,倒着数和正着数都完全迷茫……

OBS  DATE   EDATE  RET
1                      -10
2                       -9
3                       -8
……
11                      0
……
21                    10


谢谢在此活动的牛人们!!!
This one is more efficient. If your data contain weekend obs, you can modify it on the condition of week days.

data tmp2;
   set tmp;
   week2=intnx('week', '01MAR2010'd,2)+1;
   week_2=intnx('week', '01MAR2010'd,-2)+1;
   if  week_2<=date<=week2 then output;
   drop week:;
    run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

使用道具

地板
醉_清风 发表于 2010-3-5 09:25:36 |只看作者 |坛友微信交流群
学习了 解决同一个问题有很多方法 重要的是选择最有效的 谢谢
从来不需要想起 永远也不会忘记

使用道具

7
soporaeternus 发表于 2010-3-5 09:28:47 |只看作者 |坛友微信交流群
不考虑国定假日,停盘(如果是股票)等因素,楼上的方法很好。
对于股票交易日的话,一般用一张交易日流水来控制的......
Let them be hard, but never unjust

使用道具

8
sausau 发表于 2010-3-9 01:56:07 |只看作者 |坛友微信交流群
老师还没有讲怎么做
如果他讲了 ,我就来贴程序 。

谢谢 回答问题的同学们 !

使用道具

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

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

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

GMT+8, 2024-5-29 02:17