SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 532|回复: 2
打印 上一主题 下一主题

请教大虾,怎么把qssj(起始时间)至zzsj(终止时间),用rq(日期)的形式表现出来,一天就是一条记录?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-4-14 00:07:56 | 只看该作者

请教大虾,怎么把qssj(起始时间)至zzsj(终止时间),用rq(日期)的形式表现出来,一天就是一条记录?

data temp;
input blh $12. xm $10. ksdm $10.        qssj yymmdd10.        zzsj yymmdd10.        bch $3.        ;
cards;
PID000534075        陈佳龙        8F                2012-03-24 15:47:15:496        2012-04-05 08:46:39:64        2
PID000534075        陈佳龙        ICU                2012-04-05 13:14:19:183        2012-04-06 10:54:49:23        32
PID000534075        陈佳龙        ICU                2012-04-06 10:54:49:23        2012-04-10 09:16:13:653        52
PID000534075        陈佳龙        ICU                2012-04-10 11:14:53:526        2012-04-10 13:54:10:323        52
PID000534075        陈佳龙        ICU                2012-04-10 13:54:10:323        2012-04-11 09:17:09:203        51
PID000534075        陈佳龙        PICU        2012-04-11 11:17:09:253        2012-04-11 18:17:09:203        16
;
format qssj zzsj yymmdd10.;
run;
proc print;run;

请教大虾,怎么把qssj(起始时间)至zzsj(终止时间),用rq(日期)的形式表现出来,一天就是一条记录?


PID000534075        陈佳龙        8F                2012-3-24        2       
PID000534075        陈佳龙        8F                2012-3-25        2       
PID000534075        陈佳龙        8F                2012-3-26        2       
PID000534075        陈佳龙        8F                2012-3-27        2       
PID000534075        陈佳龙        8F                2012-3-28        2       
PID000534075        陈佳龙        8F                2012-3-29        2       
PID000534075        陈佳龙        8F                2012-3-30        2       
PID000534075        陈佳龙        8F                2012-3-31        2       
PID000534075        陈佳龙        8F                2012-4-1        2       
PID000534075        陈佳龙        8F                2012-4-2        2       
PID000534075        陈佳龙        8F                2012-4-3        2       
PID000534075        陈佳龙        8F                2012-4-4        2       
PID000534075        陈佳龙        8F                2012-4-5        2       
PID000534075        陈佳龙        ICU                2012-4-5        32       
PID000534075        陈佳龙        ICU                2012-4-6        32       
PID000534075        陈佳龙        ICU                2012-4-7        52       
PID000534075        陈佳龙        ICU                2012-4-8        52       
PID000534075        陈佳龙        ICU                2012-4-9        52       
PID000534075        陈佳龙        ICU                2012-4-10        52       
PID000534075        陈佳龙        ICU                2012-4-10        51       
PID000534075        陈佳龙        PICU        2012-4-11        16        [code][/code]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-4-17 00:30:43 | 只看该作者

Re: 请教大虾,怎么把qssj(起始时间)至zzsj(终止时间),用rq(日期)的形式表现出来,一天就是一条记录?

data temp;
length blh $ 12 ;
length xm $ 10 ;
length ksdm $ 10 ;
length qssj $ 10 ;
length sj1 $ 12 ;
length zzsj $ 10 ;
length sj2 $ 10 ;
length bch $ 10 ;
input blh   xm   ksdm  qssj   sj1   zzsj   sj2   bch  ;
cards;
PID000534075 陈佳龙 8F 2012-03-24 15:47:15:496 2012-04-05 08:46:39:64 2
PID000534075 陈佳龙 ICU 2012-04-05 13:14:19:183 2012-04-06 10:54:49:23 32
PID000534075 陈佳龙 ICU 2012-04-06 10:54:49:23 2012-04-10 09:16:13:653 52
PID000534075 陈佳龙 ICU 2012-04-10 11:14:53:526 2012-04-10 13:54:10:323 52
PID000534075 陈佳龙 ICU 2012-04-10 13:54:10:323 2012-04-11 09:17:09:203 51
PID000534075 陈佳龙 PICU 2012-04-11 11:17:09:253 2012-04-11 18:17:09:203 16
;
run;
data temp;
set temp;
qssj_new=input(qssj,yymmdd10.) ;
zzsj_new=input(zzsj,yymmdd10.) ;
format qssj_new zzsj_new yymmdd10.;
drop sj1 sj2;
run;
proc print;run;
想了两天先完成第一步,第二步还要再请教,不甚感激……
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-4-18 03:37:43 | 只看该作者

Re: 请教大虾,怎么把qssj(起始时间)至zzsj(终止时间),用rq(日期)的形式表现出来,一天就是一条记录?

[code:wwv7ackc]data temp(drop=qs zz);
input blh $12. xm $4. ksdm :$10. qssj yymmdd10. qs :$12. zzsj yymmdd10. zz :$12. bch $3. ;
format qssj zzsj yymmdd10.;
d=zzsj-qssj+1;
pk=_n_;
cards;
PID000534075 CJL 8F 2012-03-24 15:47:15:496 2012-04-05 08:46:39:64 2
PID000534075 CJL ICU 2012-04-05 13:14:19:183 2012-04-06 10:54:49:23 32
PID000534075 CJL ICU 2012-04-06 10:54:49:23 2012-04-10 09:16:13:653 52
PID000534075 CJL ICU 2012-04-10 11:14:53:526 2012-04-10 13:54:10:323 52
PID000534075 CJL ICU 2012-04-10 13:54:10:323 2012-04-11 09:17:09:203 51
PID000534075 CJL PICU 2012-04-11 11:17:09:253 2012-04-11 18:17:09:203 16
;

data a;
set temp;
do i=1 to d;
  qs=qssj+i;
    output;
  format qs yymmdd10.;
  end;
run;

data b(drop=i qs lag_qs d pk); set a; by pk notsorted;
   lag_qs=lag(qs);
   if first.pk then lag_qs=.;
   else qssj=lag_qs;
  format lag_qs yymmdd10.;
run;[/code:wwv7ackc]
the target dataset and your requirment(statement) is somehow confused, hard to follow.Please give us your target dataset exact the same as what you wanted.
i.e. qssj=2012-04-05, there are 2 records with the same qssj, however, qssj=2012-04-06, there is only 1 record, and the other was deleted in your target dataset.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-6 20:36 , Processed in 0.067406 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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