楼主: 风雨同路123
3628 10

[原创博文] sas日期函数的问题请教 [推广有奖]

  • 1关注
  • 0粉丝

大专生

23%

还不是VIP/贵宾

-

威望
0
论坛币
1104 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
593 点
帖子
34
精华
0
在线时间
26 小时
注册时间
2012-3-14
最后登录
2013-9-10

楼主
风雨同路123 发表于 2012-3-14 13:55:19 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据.xls (73.5 KB)

我的数据大概是这样的,
a                              b                      c     
20030706         20050523              4
20010416         20010506               3
20030506         20010506              4
20010506         20010506              5
20111206         20010506              2
       a 和b是日期,如果a=b,如上,20010506这一天,
那么我就取a变量这个日期的前6天和后5天数据,(注意不是前6个和后5个的数据)
    因为日期不连续,所以好像要用的日期函数,我不太懂,所以想请教,不过只要能实现就行。
附件里是原始数据,请大侠给予指点,对sas实在是不熟。
二维码

扫码加我 拉你入群

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

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

关键词:日期函数 原始数据

回帖推荐

本帖被以下文库推荐

沙发
来梦来人 发表于 2012-3-14 14:02:35
直接-6或+5

藤椅
音云 发表于 2012-3-14 14:04:04
希望有懂的人来弄下。谢谢
风过疏竹; 雁渡寒潭; 故君子事来而心始现,事去而心随空。

板凳
freerunning_sky 在职认证  发表于 2012-3-14 19:01:08
如果两个日期相等,是取这个日期的前6天或者后五天数据,以变量a为准还是b为准

报纸
风雨同路123 发表于 2012-3-14 23:26:56
是依a变量这个日期为准我上面修改了一下

地板
freerunning_sky 在职认证  发表于 2012-3-14 23:58:06
  1. data a;
  2.         input a b c;
  3.         cards;
  4.         20030706 20050523 4
  5.         20010416 20010506 3
  6.         20030506 20010506 4
  7.         20010506 20010506 5
  8.         20111206 20010506 2
  9.         20010505 20010507 1
  10.         ;
  11. run;


  12. data b;
  13.         set a;
  14.         tmp_year=int(a/10000);
  15.         tmp_month=int((a-tmp_year*10000)/100);
  16.         tmp_day=a-tmp_year*10000-tmp_month*100;
  17.         a=MDY(tmp_month,tmp_day,tmp_year);
  18.         tmp_year=int(b/10000);
  19.         tmp_month=int((b-tmp_year*10000)/100);
  20.         tmp_day=b-tmp_year*10000-tmp_month*100;
  21.         b=MDY(tmp_month,tmp_day,tmp_year);
  22.         format a b date9.;
  23.         drop tmp_year tmp_month tmp_day;
  24. run;

  25. proc sql noprint;
  26.         create table c as
  27.         select b.* from b right join b as bb
  28.         on b.a>=bb.a-6 & b.a<bb.a+5
  29.         where bb.a=bb.b
  30.         ;
  31. quit;
复制代码
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

7
freerunning_sky 在职认证  发表于 2012-3-15 00:01:12
没有看原始数据,原始数据是日期,那就不用转换了,直接读进来就可以用

8
Rainysky314 在职认证  发表于 2012-3-15 00:09:20
可以试一下intnx函数,再加上条件语句应该可以。
贪婪的想法,往往导致一事无成。

9
风雨同路123 发表于 2012-3-15 09:31:09
感谢感谢,楼上的几位,给我提供了很多思路,上面那个代码很符合我的要求,再次谢过了

10
kaurala 学生认证  发表于 2013-10-28 09:44:33
学习了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 05:29