SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2960|回复: 3
打印 上一主题 下一主题

新手求教一个SAS问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2013-8-2 19:34:27 | 只看该作者

新手求教一个SAS问题

表a如下:
date
2012-1-2     
2012-1-2
2012-1-2
2012-1-3
2012-1-5
2012-1-5
增加一列n,为距离最后交易日的交易日天数,假设2012-1-5是最后交易日,那么第一行的n是2。谢谢各位大神!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2013-8-3 19:39:02 | 只看该作者

Re: 新手求教一个SAS问题

用do做循环,从当前观测日期到最后交易日,用weekday判断是否是周末(遇节假日调休等可加入数组判断……),应该就可以实现……
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2013-8-8 23:11:31 | 只看该作者

Re: 新手求教一个SAS问题

[code:3g18z4f5]data a;
input date yymmdd10.;
format date mmddyy8.;
cards;
2012-1-2
2012-1-12
2012-1-13
2012-1-4
2012-1-5
2012-1-18
;
run;
proc sql;
  create table b as
    select *,ifn(date^=max(date),intck('weekday',date, max(date)) -1,0) as n
    from a;
quit; [/code:3g18z4f5]
NOTE: I did not count holidays.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2013-10-10 12:55:38 | 只看该作者

Re: 新手求教一个SAS问题

data ex;
input date yymmdd9.;
cards;
2012-1-7
2012-1-2
2012-1-1
2012-1-6
2012-1-5
2012-1-10
;
run;
proc sort data=ex out=ex1;
by descending date ;
run;
data ex2;
set ex1 ;
do;
if _n_=1 then day=date;
retain day ;
end;
run;
data ex3;
set ex2;
do;
if date<day then n=day-date-1;
else n=0;
end;
drop day;
format date yymmdd10.;
run;
代码没有考虑周末的情况,不知能否满足你的需求?我也是新手,大家一起加油!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-2 07:30 , Processed in 0.069958 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表